我正在尝试创建一个pinterest风格的布局.我已经达到了几乎完成但唯一的问题是,如果你滚动到页面的底部,你会看到box-shadow前3列的中断.
我该怎样避免这个?
#container {
-webkit-column-count: 4;
-moz-column-count: 4;
-webkit-column-gap: 15px;
-moz-column-gap: 15px;
}
.entity {
width: 100%;
-webkit-column-break-inside: avoid;
-moz-column-break-inside: avoid;
margin-bottom: 15px;
display: inline-block;
/* float: left; */
box-shadow: 0 0 10px #000;
}
.entity:nth-child(2n) {
height: 80px;
background-color: yellow;
}
.entity:nth-child(2n+1) {
height: 100px;
background-color: red;
}
.entity:nth-child(3n) {
height: 150px;
background-color: green;
}Run Code Online (Sandbox Code Playgroud)
<div id="container">
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
</div>Run Code Online (Sandbox Code Playgroud)
这似乎是一个webkit错误,因为该问题在Firefox中无法重现.已经为此问题提交了一些(未经证实的)webkit错误报告错误14137 - 多列内部元素上的box-shadow不会绘制外部列边界和Bug 101184 - 使用列计数时会裁剪box-shadow和列间隙.
Chrome box-shadow将元素移动到新列时似乎没有考虑到这一点.你可以解决这个问题的一种方法是添加margin-top到.entity divs.这将有效地作为保留空间box-shadow,并将阻止它跨列拆分.
您的代码已进行了以下修改:
margin-top: -6px;添加到#container反制行为margin-top: 6px;集.entitymargin-top: 6px;添加到.entity作为保留空间box-shadowmargin-bottom更改为9px;on .entity以保持元素之间的相同空间#container {
-webkit-column-count: 4;
-moz-column-count: 4;
-webkit-column-gap: 15px;
-moz-column-gap: 15px;
margin-top: -6px;
}
.entity {
width: 100%;
margin-top: 6px;
-webkit-column-break-inside: avoid;
-moz-column-break-inside: avoid;
margin-bottom: 9px;
display: inline-block;
/* float: left; */
box-shadow: 0 0 10px #000;
}
.entity:nth-child(2n) {
height: 80px;
background-color: yellow;
}
.entity:nth-child(2n+1) {
height: 100px;
background-color: red;
}
.entity:nth-child(3n) {
height: 150px;
background-color: green;
}Run Code Online (Sandbox Code Playgroud)
<div id="container">
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
<div class="entity"></div>
</div>Run Code Online (Sandbox Code Playgroud)