我有一个仅在Google Chrome浏览器中出现的CSS问题。overflow: hidden
当设置在水平居中的容器中时,设置为的对象将在边缘处“剪切”,并且仅在奇数浏览器宽度下并且仅在高分辨率显示上。
HTML:
<html><body>
<div id="container">
<div class="sprite"> </div>
</div>
</body></html>
CSS:
#container
{
margin: 0 auto;
max-width: 800px;
-webkit-transform: translate3d(0px,0px,0px);
}
.sprite
{
width: 30px;
height: 30px;
overflow: hidden;
position: relative;
}
.sprite:after
{
content: ' ';
overflow: hidden;
display: block;
width: 30px;
height: 30px;
position: absolute;
top: 0;
left: 0;
background-image: url("/img/[email protected]");
background-position: 0 0;
background-repeat: no-repeat;
-webkit-background-size: 30px 30px;
-moz-background-size: 30px 30px;
-o-background-size: 30px 30px;
background-size: 30px 30px;
}
现在,当我调整窗口宽度的大小时,在奇异的窗口宽度下,子画面会在视网膜显示屏的任何一侧被剪切。在标准(1 css像素到1个显示像素)显示器上不会发生这种情况。
在Safari或Firefox中不会出现此明显的渲染错误。这是在运行Chrome 35的OS X 10.9.3上。
编辑:纯CSS圆形也会发生这种情况,因此似乎与背景图片的使用无关。
我的示例过于简化,因此问题不是独立发生的。
事实证明,通过在我的完整应用程序中使用SASS mixin,我将以下内容应用于包含精灵的面板(包括它的编辑问题)
-webkit-transform: translate3d(0px,0px,0px);
在那里可以通过可用的硬件加速(主要是iOS)来提高CSS性能。
删除此选项可以稍微改善这种情况,因此在调整窗口大小时似乎不太可能“剪切”形状。
但是,overflow: hidden
从:after
元素中删除似乎已完全解决了它。
值得注意的是,即使使用纯CSS圆,也会出现这种“剪切”副作用,它与背景图片无关(感谢@Rohit)。
这似乎是一个渲染错误,而不是我做错的事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句