我能否水平而非垂直地排列我的CSS列?

29

这是我的代码:

.column {
    column-count: 4;
    column-gap: 10px;
    -moz-column-count: 4;
    -moz-column-gap: 10px;
    -webkit-column-count: 4;
    -webkit-column-gap: 10px;
}
<div class="column">
    <div class="inner">1</div>
    <div class="inner">2</div>
    <div class="inner">3</div>
    <div class="inner">4</div>
    <div class="inner">5</div>
    <div class="inner">6</div>
    <div class="inner">7</div>
    <div class="inner">8</div>
    <div class="inner">9</div>
    <div class="inner">10</div>
    <div class="inner">11</div>
    <div class="inner">12</div>
</div>

结果是:
1 4 7 10
2 5 8 11
3 6 9 12


我想要的结果是:
1 2 3 4
5 6 7 8
9 10 11 12


有可能吗?我该怎么做?

这篇文章可能有些帮助:http://css-tricks.com/forums/discussion/23914/re-arrange-default-column-order-css3-columns/ - rink.attendant.6
这真的非常有帮助。 - Alan Yong
2
链接已失效,你有离线版本的可能性吗? - alecive
5个回答

17

Is even easier:

.inner:nth-child(4n+1) {
    clear: left;
}

.inner {
    float: left;
    margin: 5px;
}
<div class="column">
    <div class="inner">1</div>
    <div class="inner">2</div>
    <div class="inner">3</div>
    <div class="inner">4</div>
    <div class="inner">5</div>
    <div class="inner">6</div>
    <div class="inner">7</div>
    <div class="inner">8</div>
    <div class="inner">9</div>
    <div class="inner">10</div>
    <div class="inner">11</div>
    <div class="inner">12</div>
</div>

你可以在每个4n + 1个元素上应用 float: left 和清除 float: left

Ref:

:nth-child


1
我发现这个解决方案也很适用于我需要在两列水平显示的长<ul> - mrcoulson
3
可以,但它不能适应高度不同的元素。 - jscul
喜欢这个解决方案。有没有办法允许不同的高度? - Pluda
我无法让<ul>正常工作 - 它需要额外的处理吗?分别需要对<ul><li>应用什么? - Ela782
我认为这个解决方案对响应式设计不太友好。比如说你选择了4列,但是当你把浏览器窗口变窄以适应3列或2列时,项目将会错位,留下空白的地方没有项目。这是有道理的,因为屏幕上实际适合的内容不再与(4n+1)相匹配。 - Ela782

1

0
我这次真的付出了一些努力。请忽略之前的编辑内容。 display属性的inline-block可能是你想要使用的。 这里有一个详细的使用指南。
以下是一个简短的演示。
li {
    width: 200px;
    display: inline-block;
}

@CallMeAhLun 你不认为这会起作用或者有更好的解决方案吗?前者似乎更有可能,这让我感到难过。 - Stephan
我正在寻找更好的解决方案,而你给我的答案并不是更好的解决方案。我需要在CMS中工作,我需要它是动态的。 - Alan Yong
@CallMeAhLun 嗯,你应该提一下。我会帮你做一些研究的。 - Stephan
@CallMeAhLun,这就是一个真正的答案。 - Stephan
那是我想要的不同之处。 - Alan Yong

-1

4
在您的回答中包含相关代码是很好的做法,因为链接并不具备未来的可靠性。 - Patrick

-2

应用这个:

.column { 
  width: 100px; 
  overflow:hidden;
} 
.column .inner {
  width:  20px; 
  float:left; 
  text-align:center;
}

1
你能在回答的正文中解释一下吗? - Russia Must Remove Putin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接