CSS column-count 和 Chrome 错误:如何避免溢出内容被裁剪
CSS column-count and Chrome bug: how to avoid overflow content being cropped
当使用 column-count
时,似乎会裁剪任何 溢出 内容。
#columns {
-webkit-column-count: 1;
-webkit-column-gap: 10px;
/*-webkit-column-fill: auto;*/
-moz-column-count: 1;
-moz-column-gap: 10px;
/*-moz-column-fill: auto;*/
column-count: 1;
column-gap: 10px;
/*column-fill: auto;*/
border: 1px solid red;
overflow: visible;
}
.pin {
width: 100%;
display: inline-block;
padding: 10px;
margin-bottom: 5px;
}
<div id="columns">
<div class="pin">
<a href="#">
<span class="onsale">Sale!</span>
<img src="#.jpg" />
</a>
<h3>Product 1</h3>
</a>
</div>
</div>
结果:
有什么办法可以解决这个问题吗?
编辑 1:
这似乎是 Chrome. 中的一个 bug
虽然在 Firefox 上没问题:
编辑 2:
span.onsale {
min-height: 3.236em;
min-width: 3.236em;
padding: .202em;
font-size: 1em;
font-weight: 700;
position: absolute;
text-align: center;
line-height: 3.236;
top: -.5em;
left: -.5em;
margin: 0;
border-radius: 100%;
background-color: $highlight;
color: $highlightext;
font-size: .857em;
-webkit-font-smoothing: antialiased;
}
只需在#columns 中使用填充 class
我不确定你是如何设计你的 .onsale
所以我按照我自己的方式设计。
如果在.pin
中使用position:relative
然后position:absolute
就可以达到你想要的效果。
更新: 问题是 Chrome 中的 webkit-column-count:1
并且由于与 1
有相同或没有任何相同之处,只需删除它并使用另一种技术,通过使用 position:absolute
可以让 .onsale
流出
#columns {
border: 1px solid red;
}
.pin {
width: 100%;
display: inline-block;
padding: 10px;
margin-bottom: 5px;
position: relative
}
.onsale {
min-height: 3.236em;
min-width: 3.236em;
padding: .202em;
font-size: 1em;
font-weight: 700;
position: absolute;
text-align: center;
line-height: 3.236;
top: -.5em;
left: -.5em;
margin: 0;
border-radius: 100%;
background-color: lightgreen;
color: white;
font-size: .857em;
-webkit-font-smoothing: antialiased;
}
<div id="columns">
<div class="pin">
<a href="#">
<span class="onsale">Sale!</span>
<img src="//placehold.it/300x300" />
</a>
<h3>Product 1</h3>
</div>
<div class="pin">
<a href="#">
<span class="onsale">Sale!</span>
<img src="//placehold.it/300x300" />
</a>
<h3>Product 2</h3>
</div>
</div>
将 transform: translateZ(0);
添加到您的 .pin
以启用硬件加速作为解决方法。
我也有解决办法。
这个例子展示了
的用法
transform: translateZ(0);
修复了裁剪问题。它还展示了一种在悬停时使用 z-index 在其他列块上方显示内容的巧妙方法:
当使用 column-count
时,似乎会裁剪任何 溢出 内容。
#columns {
-webkit-column-count: 1;
-webkit-column-gap: 10px;
/*-webkit-column-fill: auto;*/
-moz-column-count: 1;
-moz-column-gap: 10px;
/*-moz-column-fill: auto;*/
column-count: 1;
column-gap: 10px;
/*column-fill: auto;*/
border: 1px solid red;
overflow: visible;
}
.pin {
width: 100%;
display: inline-block;
padding: 10px;
margin-bottom: 5px;
}
<div id="columns">
<div class="pin">
<a href="#">
<span class="onsale">Sale!</span>
<img src="#.jpg" />
</a>
<h3>Product 1</h3>
</a>
</div>
</div>
结果:
有什么办法可以解决这个问题吗?
编辑 1:
这似乎是 Chrome. 中的一个 bug
虽然在 Firefox 上没问题:
编辑 2:
span.onsale {
min-height: 3.236em;
min-width: 3.236em;
padding: .202em;
font-size: 1em;
font-weight: 700;
position: absolute;
text-align: center;
line-height: 3.236;
top: -.5em;
left: -.5em;
margin: 0;
border-radius: 100%;
background-color: $highlight;
color: $highlightext;
font-size: .857em;
-webkit-font-smoothing: antialiased;
}
只需在#columns 中使用填充 class
我不确定你是如何设计你的 .onsale
所以我按照我自己的方式设计。
如果在.pin
中使用position:relative
然后position:absolute
就可以达到你想要的效果。
更新: 问题是 Chrome 中的 webkit-column-count:1
并且由于与 1
有相同或没有任何相同之处,只需删除它并使用另一种技术,通过使用 position:absolute
.onsale
流出
#columns {
border: 1px solid red;
}
.pin {
width: 100%;
display: inline-block;
padding: 10px;
margin-bottom: 5px;
position: relative
}
.onsale {
min-height: 3.236em;
min-width: 3.236em;
padding: .202em;
font-size: 1em;
font-weight: 700;
position: absolute;
text-align: center;
line-height: 3.236;
top: -.5em;
left: -.5em;
margin: 0;
border-radius: 100%;
background-color: lightgreen;
color: white;
font-size: .857em;
-webkit-font-smoothing: antialiased;
}
<div id="columns">
<div class="pin">
<a href="#">
<span class="onsale">Sale!</span>
<img src="//placehold.it/300x300" />
</a>
<h3>Product 1</h3>
</div>
<div class="pin">
<a href="#">
<span class="onsale">Sale!</span>
<img src="//placehold.it/300x300" />
</a>
<h3>Product 2</h3>
</div>
</div>
将 transform: translateZ(0);
添加到您的 .pin
以启用硬件加速作为解决方法。
我也有解决办法。
这个例子展示了
的用法transform: translateZ(0);
修复了裁剪问题。它还展示了一种在悬停时使用 z-index 在其他列块上方显示内容的巧妙方法: