chrome 的列数配置中的倾斜元素
Skewing elements breaking in column-count configuration on chrome
给定一个包含 3 列的容器,使用 css 属性 column-count
,并且每列都使用 transform: skewX(-15deg)
倾斜,如果我在其中应用另一个倾斜操作列,从第二列开始,受影响的元素变得不可见。
我举了一个小例子来说明这个问题:
https://jsfiddle.net/yvkeax2s/4/
.outer {
background-color: #aaffaa;
margin: 50px;
height: 200px;
width: 510px;
column-count: 3;
-moz-column-count: 3;
-webkit-column-count: 3;
column-count-gap: 20px;
-mozcolumn-count-gap: 20px;
-webkitcolumn-count-gap: 20px;
}
.inner {
display: inline-block;
width: 150px;
transform: skewX(-15deg);
background-color: #ff9999;
height: 100%;
}
.unskewed {
transform: skewX(15deg);
}
<div class="outer">
<div class="inner">
<div class="unskewed">skewed 1 <img src="http://placehold.it/40x20"></div>
raw text 1 <img src="http://placehold.it/40x20">
</div>
<div class="inner">
<div class="unskewed">skewed 2 <img src="http://placehold.it/40x20"></div>
raw text 2 <img src="http://placehold.it/40x20">
</div>
<div class="inner">
<div class="unskewed">skewed 3 <img src="http://placehold.it/40x20"></div>
raw text 3 <img src="http://placehold.it/40x20">
</div>
</div>
在 Google chrome(版本 51.0.2704.103 m)上,我得到以下信息:
在 Firefox (47.0) 上我得到了正确的预期结果:
(倾斜的块被截断似乎是另一个问题,我目前不关心,但可能仍然值得注意)
这似乎是 chrome 和 column-count
中的一个错误,但是否有解决方法可以让它工作?
编辑:我在 53.0.2780.0 版 canary 上测试过它,它有效,所以这个错误似乎已经在未来修复了。
您可以通过将 .text class 更改为以下内容来强制显示:
.text {
transform: skewX(15deg) translateZ(0);
}
但是您需要使用 属性 列吗?它目前是高度实验性的,充满了错误并且需要很多浏览器前缀,请参阅 Can I use。
您正在做的事情可以通过多种不同的方式实现,而无需使用列 属性。我已经修改了你的 fiddle 以在没有它的情况下工作:https://jsfiddle.net/yvkeax2s/6/
.outer {
background-color: #aaffaa;
margin: 50px;
height: 200px;
width: 510px;
}
.inner {
float: left;
width: 150px;
transform: skewX(-15deg);
background-color: #ff9999;
height: 100%;
margin: 0 10px;
}
.text {
transform: skewX(15deg);
}
给定一个包含 3 列的容器,使用 css 属性 column-count
,并且每列都使用 transform: skewX(-15deg)
倾斜,如果我在其中应用另一个倾斜操作列,从第二列开始,受影响的元素变得不可见。
我举了一个小例子来说明这个问题: https://jsfiddle.net/yvkeax2s/4/
.outer {
background-color: #aaffaa;
margin: 50px;
height: 200px;
width: 510px;
column-count: 3;
-moz-column-count: 3;
-webkit-column-count: 3;
column-count-gap: 20px;
-mozcolumn-count-gap: 20px;
-webkitcolumn-count-gap: 20px;
}
.inner {
display: inline-block;
width: 150px;
transform: skewX(-15deg);
background-color: #ff9999;
height: 100%;
}
.unskewed {
transform: skewX(15deg);
}
<div class="outer">
<div class="inner">
<div class="unskewed">skewed 1 <img src="http://placehold.it/40x20"></div>
raw text 1 <img src="http://placehold.it/40x20">
</div>
<div class="inner">
<div class="unskewed">skewed 2 <img src="http://placehold.it/40x20"></div>
raw text 2 <img src="http://placehold.it/40x20">
</div>
<div class="inner">
<div class="unskewed">skewed 3 <img src="http://placehold.it/40x20"></div>
raw text 3 <img src="http://placehold.it/40x20">
</div>
</div>
在 Google chrome(版本 51.0.2704.103 m)上,我得到以下信息:
在 Firefox (47.0) 上我得到了正确的预期结果:
(倾斜的块被截断似乎是另一个问题,我目前不关心,但可能仍然值得注意)
这似乎是 chrome 和 column-count
中的一个错误,但是否有解决方法可以让它工作?
编辑:我在 53.0.2780.0 版 canary 上测试过它,它有效,所以这个错误似乎已经在未来修复了。
您可以通过将 .text class 更改为以下内容来强制显示:
.text {
transform: skewX(15deg) translateZ(0);
}
但是您需要使用 属性 列吗?它目前是高度实验性的,充满了错误并且需要很多浏览器前缀,请参阅 Can I use。
您正在做的事情可以通过多种不同的方式实现,而无需使用列 属性。我已经修改了你的 fiddle 以在没有它的情况下工作:https://jsfiddle.net/yvkeax2s/6/
.outer {
background-color: #aaffaa;
margin: 50px;
height: 200px;
width: 510px;
}
.inner {
float: left;
width: 150px;
transform: skewX(-15deg);
background-color: #ff9999;
height: 100%;
margin: 0 10px;
}
.text {
transform: skewX(15deg);
}