在CSS中使用列时删除框阴影中断

Sid*_*ril 4 css css3

我正在尝试创建一个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)

Hid*_*bes 6

这似乎是一个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;.entity
  • margin-top: 6px;添加到.entity作为保留空间box-shadow
  • margin-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)