CSS3 Transitions'对齐像素'

时间:2013-02-17 02:08:26

标签: html5 css3 animation css-transitions

我试图在CSS3中获得一个微妙的背景运动动画,就像Xbox上的Metro图像拼贴或Apple幻灯片中的Ken Burns效果一样。问题是CSS3似乎将位置值四舍五入到最接近的整数,或者不支持子像素渲染,因此结果看起来非常不稳定。

我在这里做了一个小提琴:http://jsfiddle.net/ykg3b/1/
这是CSS

.test {
    width: 400px;
    height: 400px;
    background: url('http://img.fusynth.com/600/artists/8.jpg');
    background-size: cover;
    background-position-x: 0.01px;
    -webkit-transform: translateX(0.01px);
    -webkit-transform-style: preserve-3d;
    -webkit-backface-visibility: hidden;
    -webkit-transition: background-position-x 15s linear;
    -moz-transition: background-position-x 15s linear;
    -o-transition: background-position-x 15s linear;
    -ms-transition: background-position-x 15s linear;
    transition: background-position-x 15s linear;
}
.test:hover {
    background-position-x: -100.01px;
    -webkit-transition: background-position-x 15s linear;
    -moz-transition: background-position-x 15s linear;
    -o-transition: background-position-x 15s linear;
    -ms-transition: background-position-x 15s linear;
    transition: background-position-x 15s linear;
}

如果你加速动画,那么抽搐就会消失,所以这不仅仅是浏览器延迟。

我还尝试将一个图像放在一个带溢出的div中:隐藏并设置其position属性的动画。同样的效果。我还尝试强制Webkit进行3D渲染。没有区别。

有没有办法让CSS3正确地做到这一点,或者我将不得不求助于Canvas或WebGL?

谢谢! --Keaton

2 个答案:

答案 0 :(得分:1)

问题解决了!我为一个屏蔽div内部的位置设置了动画,然后直接设置CSS Translate Transform而不是位置。

答案 1 :(得分:0)