【问题标题】:Floating multiple li's left and right浮动多个li的左右
【发布时间】:2013-03-22 14:06:24
【问题描述】:

我正在尝试在 wordpress 中制作自定义侧边栏,我在 li 中拥有所有元素和信息,我想做的是尝试将 li 总数的一半向左移动,一半向右移动...

我使用的是左右浮动/清除,这似乎不像我想要的那样工作......

HTML 结构:-

<ul>
    <li class="left">Left</li>
    <li class="left">Left</li>
    <li class="left">Left</li>
    <li class="left">Left</li>
    <li class="left">Left</li>
    <li class="right">Right</li>
    <li class="right">Right</li>
    <li class="right">Right</li>
    <li class="right">Right</li>
    <li class="right">Right</li>
</ul>

CSS:-

.left { float:left; width:50%; clear:left; }
.right { float:right; width:50%; clear:right }

jsFiddle

【问题讨论】:

标签: wordpress css html-lists


【解决方案1】:

随机播放 HTML。当一个元素是cleared 时,它会针对先前浮动的元素这样做;在你的情况下,这是清除第五个元素的第六个元素:

<ul>
    <li class="left">Left</li>
    <li class="right">Right</li>
    <li class="left">Left</li>
    <li class="right">Right</li>
    <li class="left">Left</li>
    <li class="right">Right</li>
    <li class="left">Left</li>
    <li class="right">Right</li>
    <li class="left">Left</li>
    <li class="right">Right</li>
</ul>

jsFiddle

【讨论】:

  • 虽然 HTML/CSS 没问题,但我觉得这在语义和维护方面有点困难。我宁愿看到ul元素分别对左右链接进行分组。
  • @MarcAudet 对。将内容分组为“列”将是一种更易于维护的方法。不过,我的回答有助于澄清/说明为什么列倾斜的问题;更重要的是clears 和floats 的功能...
  • 我同意@Xander - 这很好,所以看到正在讨论的两个选项,因为根据被标记的内容,这两个选项都很有用。
  • 因为我使用的是 wordpress 小部件,所以 wordpress 不会动态调整它,因为小部件可以按照用户的意愿排列...
【解决方案2】:

你为什么不这样刹车呢,视情况而定:)

<ul class="left">
    <li>Left</li>
    <li>Left</li>
    <li>Left</li>
    <li>Left</li>
    <li>Left</li>
</ul>

<ul class="right">

    <li>Right</li>
    <li>Right</li>
    <li>Right</li>
    <li>Right</li>
    <li>Right</li>
</ul>

.left{
float: left;
width: 50%; }

.right{
float: right;
width: 50%; }

或者按照@Xander 所说的那样做:)

【讨论】:

  • 是的,我更喜欢这个,因为它更容易从 HTML 中看到意图。
  • 我正在开发 wordpress,为此我必须自定义 HTML 结构,这是一个相当长的过程...
  • 一个 数据列表分开并使其成为两个列表只是为了显示目的,这在语义上没有 任何 意义。
【解决方案3】:

如果您愿意放弃您的列表样式光盘(取决于浏览器),您可以轻松做到这一点,无需浮动或修改您的标记。

http://jsfiddle.net/Duejc/2/

ul {
    -webkit-columns: 2;
    -moz-columns: 2;
    columns: 2;
}

【讨论】:

【解决方案4】:

用简单的标记和样式完成 http://codepen.io/ruinunes/pen/bpgpZV

HAML:

%ul.chat
  %li.stamp 
    Saturday
    %span 20:32
  %li.left Who is it?
  %li.right It's Little Nero's, sir. I have your pizza.
  %li.left Leave it on the doorstep and get the hell outta here
  %li.stamp 
    Saturday
    %span 20:33
  %li.right Okay, but what about the money?
  %li.left What money?
  %li.right Well, you have to pay for your pizza, sir.
  %li.left Is that a fact? How much do I owe you?
  %li.left Keep the change, ya filthy animal!
  %li.right Cheapskate.

SCSS

ul.chat {
  font-family: sans-serif;
  list-style:none;
  margin: 0 auto;
  padding: 0;
  width: 50%;

  li {
    margin-bottom: 10px;
    display: inline-block;
    border-radius: 8px;
    padding: 10px;

    &.left { 
      background: #e3e3e3;
      float:left;
      margin-right: 50%;
      width:50%;
      border-top-left-radius: 0;
    }

    &.right {
      background: #6CCE66;
      color: #fff;
      float: right;
      width: 50%;
      border-top-right-radius: 0;
    }

    &.stamp {
      color: #666;
      font-size: 80%;
      text-align: center;
      width: 100%;
      span {
        color: #999;
      }
    }
  }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多