ボタンをクリックするたびに、オブジェクトが一定量右に移動するアニメーションを作成したいと考えています。
たとえば、オブジェクトの初期位置が「左: 10px」で、アニメーションの 1 ループごとに 10px ずつ移動する場合、最初のクリック後は 20px に移動し、2 回目のクリック後は 30px に移動する必要があります。
どうすればいいですか?現在、CSS アニメーションは、クリックするたびにオブジェクトの最初の位置から再開するようです。
ボタンをクリックするたびに、オブジェクトが一定量右に移動するアニメーションを作成したいと考えています。
たとえば、オブジェクトの初期位置が「左: 10px」で、アニメーションの 1 ループごとに 10px ずつ移動する場合、最初のクリック後は 20px に移動し、2 回目のクリック後は 30px に移動する必要があります。
どうすればいいですか?現在、CSS アニメーションは、クリックするたびにオブジェクトの最初の位置から再開するようです。
これは可能ではないと思います。少なくとも、次のようなことはできません。
@-webkit-keyframes move{
0% {}
100% {
-webkit-transform: translate(10px);
}
}
This will not work at all.
ただし、代わりにjQueryを使用できます。非常に少ない行を使用して、アニメーションを簡単に作成できます。
$('#button').click(function() {
$('#book').animate({
left: '+=10'
}, 1000, function() {
console.log("Done.");
});
});
ライブデモ:here
これがあなたを助けることを願っています。
したがって、アニメーション部分には CSS3 を使用する必要があります。transition
次のように CSS で使用できます。
-webkit-transition:left .3s ease-in-out;
JavaScriptを使用して変更しますleft
(JavaScriptはアニメーション部分には関与していません)。
ライブデモ(新規) :here
CSS がアニメーションを行う非 jQuery バージョンを次に示します。アニメーションの設定left
と制御には Javascript が必要です。transition: left
デモ: 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;
}