【问题标题】:Can I order my CSS columns horizontally instead of vertically?我可以水平而不是垂直排列我的 CSS 列吗?
【发布时间】:2013-06-23 19:11:01
【问题描述】:

这是我的代码:

.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

这可能吗?我该怎么做呢?

【问题讨论】:

标签: css css-multicolumn-layout column-count


【解决方案1】:

更简单:

.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

参考:

:nth-child

【讨论】:

  • 我发现这个解决方案也很好地适用于我需要在两个水平列中显示的长 &lt;ul&gt;
  • 这没关系,但它不允许不同的高度元素。
  • 喜欢这个解决方案。有什么方法可以允许不同的高度?
  • 我无法使用 &lt;ul&gt; 完成这项工作 - 它需要一些额外的工作吗?您需要分别向 &lt;ul&gt;&lt;li&gt; 申请什么?
  • 另外我觉得这个方案对响应式设计不是很友好。如果说您选择 4 列,但随后您将浏览器窗口的宽度缩小到仅适合 3 或 2 列,那么项目将错位并且您将有没有项目的间隙。这是有道理的,因为随后物理上适合屏幕的内容不再与 (4n+1) 匹配。
【解决方案2】:

应用这个:

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

【讨论】:

  • 您能在答案正文中解释一下吗?
【解决方案3】:

在 url 下面查看我的简单代码。 https://github.com/JJ81/column-count 也许你可以拥有你想要的。

【讨论】:

  • 最好在您的答案中包含相关代码,因为链接不是未来的证明。
【解决方案4】:

Mansonry.js 是解决方案。看看这个http://masonry.desandro.com/ 另请查看此演示。我猜这就是你需要的..我也在尝试实现这样的东西:) http://tympanus.net/Development/GridLoadingEffects/index2.html

据我所知,只有 CSS 无法做到这一点,这很可悲

【讨论】:

    【解决方案5】:

    这一次我确实付出了一些努力。忽略之前编辑的所有内容

    the display property's inline-blocks 可能是您想要使用的。

    Here 是关于如何使用它的详尽指南

    这是一个简短的演示

    li {
        width: 200px;
        display: inline-block;
    }
    

    【讨论】:

    • @CallMeAhLun 您不认为它会起作用或存在更好的解决方案吗?前者似乎更有可能,这让我很难过
    • 我正在寻找更好的解决方案,而您给我的答案并不是更好的解决方案。我需要在 CMS 中工作,我需要动态。
    • @CallMeAhLun 你应该提到我会为你做一些研究
    • @CallMeAhLun 好了,这次是真正的答案
    • 那是我想要的不同的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    相关资源
    最近更新 更多