我希望创建一个动画,每按一次按钮,对象就会向右移动一定量。
例如,如果对象的初始位置是“left:10px”并且每1个动画循环移动它说10px,那么在第一次单击后它应该是20px,在第二次单击后它应该是30px所以上。
我应该怎么做呢?现在,CSS动画似乎在每次点击时从对象的初始位置重新开始。
答案 0 :(得分:2)
我认为这是不可能的,至少你做不到这样的事情:
@-webkit-keyframes move{
0% {}
100% {
-webkit-transform: translate(10px);
}
}
This will not work at all.
但是,您可以使用jQuery代替。您可以使用very few lines:
轻松创建动画$('#button').click(function() {
$('#book').animate({
left: '+=10'
}, 1000, function() {
console.log("Done.");
});
});
现场演示: here
希望这会帮助你。
因此您需要将CSS3用于动画部分。您可以在CSS中使用transition
,如下所示:
-webkit-transition:left .3s ease-in-out;
并使用JavaScript更改其left
(动画部分中涉及的JavaScript不是 )。
现场演示(新): here
答案 1 :(得分:1)
这是一个非jQuery版本,用CSS做动画。设置left
然后transition: left
控制动画需要Javascript。
演示:http://jsfiddle.net/ThinkingStiff/UEt4Y/
脚本:
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;
}