5

在过去的几天里,我一直在努力思考如何解决某个网页设计问题,但到目前为止,我还没有想出任何优雅的解决方案。

为了简要总结设计,有 3 列容器,其中容器的高度不均匀(动态生成)但宽度相同(流体)。它们需要按从左到右的数字顺序排列;即顶行的1-2-3,其次是第二行的4-5-6,依此类推。

现在,真正让我崩溃的是试图让这条线整齐排列,而在容器之间没有太多不必要的“垂直间距”。我创建了以下模型代码(也可用作代码块下方的 JSFiddle)来说明:

HTML

<div class="wrapper" id="wrapper">
    <div class="container small"  id="container_1">1</div>
    <div class="container large"  id="container_2">2</div>
    <div class="container small"  id="container_3">3</div>
    <div class="container medium" id="container_4">4</div>
    <div class="container small"  id="container_5">5</div>
    <div class="container medium" id="container_6">6</div>
    <div class="container large"  id="container_7">7</div>
    <div class="container medium" id="container_8">8</div>
    <div class="container large"  id="container_9">9</div>
    <div class="clearfix"></div>
</div>

CSS

.wrapper {
    width: 100%;
    padding: 5%;
}
.clearfix {
    clear: both;
}
.container {
    display: block;
    float: left;
    width: 25%;
    margin: 2.5%;
    color: white;
    font-weight: bold;
    text-transform: uppercase;
}
.small {
    height: 100px;
    background: red;
}
.medium {
    height: 150px;
    background: green;
}
.large {
    height: 200px;
    background: blue;
}

JSFiddle:http: //jsfiddle.net/tzikas/MYgNx/

注意:由于列布局本身最终会根据设备宽度分解为两列/一列,因此我在 JSFiddle 中包含了一个简单的“切换布局”按钮来模拟这一点。

我想帮助弄清楚的内容如下:

  1. 如何摆脱例如“1”和“5”或“2”和“6”之间的过度垂直间距?
  2. 如何让“4”将自己定位在“1”下方而不是“3”下方(同时也解决了前一点)?

最好我想在不通过任何类型的脚本操作 DOM 的情况下解决这个问题,但如果我必须这样做,那么 mooTools 是我的“首选毒药”。

4

1 回答 1

3

根据您的要求。您可以为此使用http://masonry.desandro.com/ 。

于 2013-03-15T09:29:40.757 回答