【问题标题】:How to seamlessly align block divs of different sizes?如何无缝对齐不同大小的块 div?
【发布时间】:2014-02-21 17:54:56
【问题描述】:

可以这么说,我想创建一个div 框“网格”。

目前我的div 框没有正确对齐。 div 不同高度的盒子会在一些 divs 之间造成很大的垂直空间。 div 框也更靠近右侧。

我希望 div 框彼此之间保持相同的边距,无论框的高度如何,并且它们从左 > 右排列。

我希望div 框像这样对齐:

这是正在发生的事情的示例:http://jsfiddle.net/P4S8z/

HTML:

.container {
  position: relative;
  float: left;
  margin: 0;
}

.box {
  position: relative;
  display: block;
  float: left;
  width: 250px;
  margin-left: 1.5em;
  margin-bottom: 0.5em;
  padding: 0 10px 0;
  color: #666;
  background: #fff;
  border: 1px solid #d2d2d2;
  border-radius: 3px;
}

.box h3 {
  position: relative;
  display: block;
  height: 20px;
  line-height: 1.3em;
  width: 260px;
  margin: 0;
  padding: 5px 10px;
  left: -15px;
  top: 8px;
  color: #cfcfcf;
  text-shadow: 0 1px 1px #111;
  border-top: 1px solid #ccc;
  border-bottom: 1px solid #ccc;
  background: #333;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
}
<div class="container">

  <div class="box" style="height:225px;">
    <h3>Blah blah</h3>
  </div>

  <div class="box" style="height:160px;">
    <h3>Blah blah</h3>
  </div>

  <div class="box" style="height:200px;">
    <h3>Blah blah</h3>
  </div>

  <div class="box" style="height:180px;">
    <h3>Blah blah</h3>
  </div>

  <div class="box" style="height:150px;">
    <h3>Blah blah</h3>
  </div>

  <div class="box" style="height:170px;">
    <h3>Blah blah</h3>
  </div>

</div>

【问题讨论】:

  • 我认为您将需要 javascript/jquery 解决方案,例如masonry.desandro.com
  • 你必须将你的 div 放到三个不同的列中,否则它们之间可能会有交互。
  • 列CSS或砌体脚本如前所述:jsfiddle.net/P4S8z/3
  • 谢谢大家。砌体脚本可以解决问题

标签: css html alignment


【解决方案1】:

我能想到的使用纯 CSS 的最简单方法是指定列。

我用一个 div 包围了每个“列”,并将这些 div 向左浮动。

这是一个更新的小提琴:http://jsfiddle.net/Renson/P4S8z/4/

这应该像你想要的那样保持边距相等

新的 HTML

<div class="container">
<div class="subcontainer">
    <div class="box" style="height:225px;">
        <h3>Blah blah</h3>
    </div>
    <div class="box" style="height:180px;">
        <h3>Blah blah</h3>
    </div>
</div>
<div class="subcontainer">
    <div class="box" style="height:160px;">
        <h3>Blah blah</h3>
    </div>
    <div class="box" style="height:200px;">
        <h3>Blah blah</h3>
    </div>
    <div class="box" style="height:150px;">
    <h3>Blah blah</h3>
    </div>
    <div class="box" style="height:170px;">
    <h3>Blah blah</h3>
    </div>
</div>

添加到 CSS

.subcontainer{
    float: left;
}

【讨论】:

    【解决方案2】:

    这实际上可以通过纯 CSS 实现:

    .container {
        column-count: 3;
    }
    

    至少在现代浏览器中:https://caniuse.com/#search=column-count

    【讨论】:

    【解决方案3】:

    你可以使用这样的东西:(比如说 6 个网格列) #subcontainer > div { 向左飘浮; 显示:内联; 边距:0 20px 0 0; } #subcontainer > div:nth-of-type(6n+6) { 右边距:0; }

        #ids or .classes with height and width {
        ...
        }
    

    这样,您始终将#subcontainer 的第 6 个孩子作为目标,独立于右边框的类或 id,但中心 div 将始终具有相同的边距

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多