html - css float div 创建垂直间隙

标签 html css

我的问题类似于this question , 但我有不同的要求,所以想问一个单独的问题

我正在尝试创建一系列 div 并以三列布局显示它们。

布局如图http://jsfiddle.net/o595n5tr/3/ .

HTML

<div class="list">
    <div class="item">Lorem ipsum dolor sit amet,</div>
    <div class="item">Lorem ipsum dolor sit amet, consectetur adipiscing elit. </div>
    <div class="item">Lorem ipsum dolor sit amet,</div>
    <div class="item">Lorem ipsum dolor sit amet,</div>
    <div class="item">Lorem ipsum dolor sit amet</div>
    <div class="item">Lorem ipsum dolor sit amet</div>
</div>

CSS

.group:before,
.group:after {
    content: "";
    display: table;
}
.group:after {
    clear: both;
}
.group {
    *zoom: 1;
}

.list{
    width: 300px;
}

.item{
    float: left;
    width: 90px;
    background: yellow;
    margin-right: 5px;
    margin-bottom: 10px;
}

.item:nth-child(3){
    background: brown;
}

.item:nth-child(5){
    background: red;
}

谁能告诉我为什么第一个 div 和它下面的红色 div 之间有一个垂直间隙。也请你告诉我如何弥补这个差距。

顺便说一句,第四列出现在第三列下方我没问题,这就是我想要的。

提前致谢

最佳答案

差距是由列表中第 3 个和第 4 个 div 的高度引起的。正如 @K.M.B 提到的那样,您使用 float: left 以行方式分组。因此,一旦列表 div 的上一个溢出其父级,它就会采用放置的最后一个 div(第 4 个)的高度,并以此为基础放置下一个 div。

为了帮助形象化这一点,想象一下从右上角将 div 一个一个地滑入。一旦它溢出父容器,它就会沿着最后一个放置的元素向下滑动,直到它可以向左移动并适合父容器。这就是为什么第 4 个 div 在第 3 个下面。然后下一个元素向下滑动 3 & 4,然后使用该高度(即行高)。

如果将display 模式更改为inline-block。 您可以看到相反的效果正在发生。 http://jsfiddle.net/o595n5tr/6/

假设您不能为 block 使用固定高度...

您可以使用 absolute 定位将 div 的 手动放置在使用 relative 定位的容器中(但这显然不会响应)

您可能想考虑使用像ma​​sonry 这样的库。它是一个有助于解决此类常见问题的 JS 库。 http://masonry.desandro.com/

否则,您可能需要添加列 divs 以将它们垂直分组。这将解决您的垂直间隙问题。同样,这可能会导致响应能力(即移动设备)出现问题。

关于html - css float div 创建垂直间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29247733/

相关文章:

javascript - 使用日语 tategaki 时对齐 block 元素 (p, div) 的最后一行(书写模式 : tb-rl)

javascript - 为什么我在使用 Vide 时收到 jQuery 错误 "url.indexOf is not a function"?

html - 将图像宽度增加到自动宽度的 x 倍

javascript - 单击此树的任何元素时如何创建弹出窗口

css - 图像上的 anchor 链接

html - 使用纯 CSS 在未知尺寸的 div 中的任何 9 个可能位置中定位未知尺寸的 img|span|div

html - 如何使用 CSS 创建父图像并缩放子图像?

通过非 PHP 扩展访问时,PHP Session 不起作用

html - 将带有内容的 div 添加到图像上(使用 z-index)未按预期工作

html - 如何使用CSS定位标签文本