我希望创建一个动画,在此动画中,每次单击按钮时,对象都会向其右侧移动一定量。
例如,如果对象的初始位置是“左:10px”,并且每1个动画循环将其移动10px,那么在第一次单击之后,它应该是20px,在第二次单击之后,它应该是30px,依此类推。
下面是我现在的代码:
JavaScript
document.getElementById( 'move-me' ).addEventListener( 'click', function () {
var move = document.getElementById( 'move' );
move.style.left = ( move.offsetLeft + 10 ) + 'px';
}, false );HTML
<button id="move-me">Move</button>
<div id="move"></div>CSS
#move {
background: green;
height: 50px;
left: 0px;
position: absolute;
top: 100px;
transition: left 250ms ease-in-out;
-moz-transition: left 250ms ease-in-out;
-ms-transition: left 250ms ease-in-out;
-o-transition: left 250ms ease-in-out;
-webkit-transition: left 250ms ease-in-out;
width: 50px;
}这段代码使用了CSS3转换,但它没有使用我的安卓设备上的-webkit-transform硬件加速。我该怎么解决这个问题呢?
发布于 2012-01-05 05:33:40
选择不是在-webkit-transform和-webkit-transition之间,而是在left和-webkit-transform之间。
下面是如何使用3d加速的方法:
#move {
background: green;
height: 50px;
left: 0px;
position: absolute;
top: 100px;
-moz-transition: -moz-transform 250ms ease-in-out;
-ms-transition: -ms-transform 250ms ease-in-out;
-o-transition: -o-transform 250ms ease-in-out;
-webkit-transition: -webkit-transform 250ms ease-in-out;
transition: transform 250ms ease-in-out;
width: 50px;
}Javascript:
document.getElementById( 'move' ).addEventListener( 'click', function() {
var move = document.getElementById( 'move' );
var transform = "translate3d("+ (move.offsetLeft+200) + "px, 0, 0)";
move.style.webkitTransform = transform;
move.style.mozTransform = transform;
move.style.msTransform = transform;
move.style.oTransform = transform;
move.style.transform = transform;
}, false );http://jsfiddle.net/CjQ8H/
发布于 2012-04-24 16:30:17
您也可以使用translateX。这绝对是硬件加速。
targetDiv.style.webkitTransition = "0ms"
targetDiv.style.webkitTransform = "translateX(100%)这会将div向右移动100%,但只有在硬件加速设备中才会很好和平滑。
https://stackoverflow.com/questions/8733406
复制相似问题