【问题标题】:Float multiple fixed-width / varible-height boxes into 2 columns将多个固定宽度/可变高度的框浮动到 2 列
【发布时间】:2010-05-12 23:35:50
【问题描述】:

我会尽力解释这一点。我有多个固定宽度但高度可变的 div。我想将这些框浮动到固定宽度容器内的两列中。当给他们一个浮点数时会发生什么:左值,我得到这样的东西:

######### ######### 
# box 1 # # box 2 # 
######### # ..... # 
......... # ..... # 
......... ######### 
######### ######### 
# box 3 # # box 4 # 
# ..... # # ..... # 
######### #########
######### #########
# box 5 # # box 6 #
# ..... # #########
# ..... #
#########

(句号为空格)

我真正想要的是框 3 的顶部接触框 1 的底部。有什么简单的方法可以实现这一点?

编辑:希望找到适用于 2 列以上的解决方案。完美的解决方案将与弹性布局一起使用,并在水平方向上扩展到尽可能多的列。

【问题讨论】:

    标签: html css


    【解决方案1】:

    你需要在你的盒子上左右交替浮动。

      .box:nth-child(2n+1){
        float: left;
      }
      .box:nth-child(2n){
        float: right;
      }
    

    警告此代码与旧版浏览器不兼容,对于那些您可能希望每隔一个框以编程方式设置不同 CSS 类的浏览器。

    【讨论】:

    • 哇,太疯狂了。从来没有见过这样的CSS。有什么方法可以使用 3 列而不是 2 列?似乎随着左/右浮动改变它不适用于第三个中间列。
    • 您可以尝试使用没有任何浮动行为的中间列,因此它将保持在中间。 .box:nth-child(3n+1){ 浮动:左; } .box:nth-child(3n){ 浮动:对;但在某些时候,您可能需要利用 CSS3 列属性(目前仅适用于基于 mozilla 或 webkit 的浏览器)-webkit-column-count: 3;
    • 这个解决方案的问题是它不允许最佳的盒子放置。例如,即使盒子 3 垂直大到足以容纳盒子 4 和盒子 5,盒子 5 仍然会被踢到左侧。我正在寻找一种优化展示位置的解决方案,我相信 Jeremy 也在寻找同样的东西。
    • 太棒了!正是我想要的!
    【解决方案2】:

    不要横向工作,而是纵向工作。

    现在:

    左 右 1 ==> 2 3 ==> 4 5 ==> 6

    其他方式:

    L R
    1 2
    \/ \/
    3 4
    \/ \/
    5 6

    所以基本上,将所有奇数 div 放在左列,将所有偶数 div 放在右列。如果您动态创建这些 div,请先将它们按奇数和偶数分组,然后将它们添加到相应的列中。

    【讨论】:

    • 嗨,Alec——是的,div 是动态创建的,所以我试图不必做任何不必要的额外处理。我希望 CSS 可以为我处理它。似乎这可能是我唯一的选择,但要更改 div 的动态创建。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 2011-05-18
    • 1970-01-01
    • 2016-07-10
    相关资源
    最近更新 更多