29

jqueryを介してCSSプロパティの変換をアニメーション化することは可能ですか?

$('.myButtons').animate({"transform":"translate(50px,100px)"})

そしてそれは多くのブラウザで動作しますか?

デモが機能しない:http://jsfiddle.net/ignaciocorreia/xWCVf/

アップデート:

私の解決策:

  1. 単純な実装-http://jsfiddle.net/ignaciocorreia/R3EaJ/
  2. 複雑な実装とマルチブラウザ-http://ricostacruz.com/jquery.transit/
4

6 に答える 6

10
$('div').css({"-webkit-transform":"translate(100px,100px)"});​

http://jsfiddle.net/xWCVf/5/

于 2012-12-23T15:33:53.670 に答える
8

これを実現するのに役立つjQueryプラグインがあります:http://ricostacruz.com/jquery.transit/

于 2012-12-23T15:25:13.573 に答える
7

animateこれは、jQueryメソッドを独自の方法で使用することで実現できる興味深い方法があります。この方法では、値animateを説明するjavascriptオブジェクトでメソッドを呼び出し、最初のパラメーターとして、値fromを説明する別のjsオブジェクトと関数を渡します。これは、前述の値に従ってアニメーションの各ステップを処理します。tostep

例-アニメーション変換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>

于 2017-08-24T08:48:21.903 に答える
5

CanIUseによると、複数のプレフィックスを付ける必要があります。

$('div').css({
    "-webkit-transform":"translate(100px,100px)",
    "-ms-transform":"translate(100px,100px)",
    "transform":"translate(100px,100px)"
  });​
于 2014-05-16T16:00:23.903 に答える
1

私もこれを行うための良い方法を探していました。「transform」プロパティにトランジションを設定し、トランスフォームを変更してからトランジションを削除するのが最善の方法であることがわかりました。

すべてをjQueryプラグインにまとめました

https://gist.github.com/dustinpoissant/8a4837c476e3939a5b3d1a2585e8d1b0

次のようなコードを使用します。

$("#myElement").animateTransform("rotate(180deg)", 750, function(){
  console.log("animation completed after 750ms");
});
于 2017-04-13T17:01:21.353 に答える
-1

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>

于 2016-07-12T14:52:07.707 に答える