jqueryを介してCSSプロパティの変換をアニメーション化することは可能ですか?
$('.myButtons').animate({"transform":"translate(50px,100px)"})
そしてそれは多くのブラウザで動作しますか?
デモが機能しない:http://jsfiddle.net/ignaciocorreia/xWCVf/
アップデート:
私の解決策:
jqueryを介してCSSプロパティの変換をアニメーション化することは可能ですか?
$('.myButtons').animate({"transform":"translate(50px,100px)"})
そしてそれは多くのブラウザで動作しますか?
デモが機能しない:http://jsfiddle.net/ignaciocorreia/xWCVf/
アップデート:
私の解決策:
$('div').css({"-webkit-transform":"translate(100px,100px)"});
これを実現するのに役立つjQueryプラグインがあります:http://ricostacruz.com/jquery.transit/
animate
これは、jQueryメソッドを独自の方法で使用することで実現できる興味深い方法があります。この方法では、値animate
を説明するjavascriptオブジェクトでメソッドを呼び出し、最初のパラメーターとして、値from
を説明する別のjsオブジェクトと関数を渡します。これは、前述の値に従ってアニメーションの各ステップを処理します。to
step
translateY
:var $elm = $('h1'); // element to be moved
function run( v ){
// clone the array (before "animate()" modifies it), and reverse it
var reversed = JSON.parse(JSON.stringify(v)).reverse();
$(v[0]).animate(v[1], {
duration: 500,
step: function(val) {
$elm.css("transform", `translateY(${val}px)`);
},
done: function(){
run( reversed )
}
})
};
// "y" is arbitrary used as the key name
run( [{y:0}, {y:80}] )
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>jQuery animate <pre>transform:translateY()</pre></h1>
CanIUseによると、複数のプレフィックスを付ける必要があります。
$('div').css({
"-webkit-transform":"translate(100px,100px)",
"-ms-transform":"translate(100px,100px)",
"transform":"translate(100px,100px)"
});
私もこれを行うための良い方法を探していました。「transform」プロパティにトランジションを設定し、トランスフォームを変更してからトランジションを削除するのが最善の方法であることがわかりました。
すべてをjQueryプラグインにまとめました
https://gist.github.com/dustinpoissant/8a4837c476e3939a5b3d1a2585e8d1b0
次のようなコードを使用します。
$("#myElement").animateTransform("rotate(180deg)", 750, function(){
console.log("animation completed after 750ms");
});
CSSでキーフレームアニメーションを設定する必要があります。そして、jQueryでキーフレームを使用します。
$('#myTest').css({"animation":"my-animation 2s infinite"});
#myTest {
width: 50px;
height: 50px;
background: black;
}
@keyframes my-animation {
0% {
background: red;
}
50% {
background: blue;
}
100% {
background: green;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myTest"></div>