CSS3变换旋转导致Chrome中的1px移位

Don*_*ply 53 google-chrome css3 css-transitions css-transforms

我在使用css3变换旋转过渡的chrome中遇到了问题.转换工作正常,但在完成后元素移动一个像素.另一个奇怪的事情是它只在页面居中(margin:0 auto;)时才会发生.如果你也删除了转换,那么bug仍然存在.

你可以在这里看到它:

http://jsfiddle.net/MfUMd/1/

HTML:

<div class="wrap">
    <img src="https://github.com/favicon.ico" class="target" alt="img"/>
</div>

<div class="wrap">
    <div class="block"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.wrap {
    margin:50px auto;
    width: 100px;
}
.block {
    width:30px;
    height:30px;
    background:black;
}
.target,.block {
    display:block;
    -webkit-transition: all 0.4s ease;
    -moz-transition: all 0.4s ease;
    -o-transition: all 0.4s ease;
    transition: all 0.4s ease;
}
.target:hover,.block:hover {
    -webkit-transform: rotate(90deg); 
    -moz-transform: rotate(90deg); 
    -o-transform: rotate(90deg);
    -ms-transform: rotate(90deg);  
}
Run Code Online (Sandbox Code Playgroud)

注释掉该margin:0 auto;线以使其消失.

任何人都有任何想法如何在保持页面居中的同时阻止这一点?

我在OSX 10.6.8上使用的是版本24.0.1312.57

干杯

Gin*_*ino 103

实际上只需将其添加到包含所有元素的站点容器中: -webkit-backface-visibility: hidden;

应该解决它!

吉诺

  • 有谁知道为什么这项工作?我觉得奇怪的是把东西放进我的css而不理解它们. (5认同)

Jam*_*mes 21

我有同样的问题,我通过将以下内容添加到使用转换的div的css来修复它:

-webkit-backface-visibility: hidden;
-webkit-transform: translateZ(0) scale(1.0, 1.0);
Run Code Online (Sandbox Code Playgroud)

背面用于基于3D的过渡,但如果您只使用2D,则不需要额外的东西.