別の質問に対するこの回答では、jQuery を使用して要素の回転をアニメーション化できる小さなハックについて説明しています。
私の状況では、要素の回転を top: および left: プロパティと同時にアニメーション化したいと考えていました。だから私はこのフィドルを思いつきました。
function transformThing() {
$('#thing').animate({ top: '+=50', left: '+=50', borderSpacing: -90 }, {
step: function(now,fx) {
if(fx.prop === 'borderSpacing') {
$(this).css('-webkit-transform','rotate('+now+'deg)');
$(this).css('-moz-transform','rotate('+now+'deg)');
$(this).css('transform','rotate('+now+'deg)');
}
},
duration: 1000
}, 'swing');
}
$(document).ready(function() {
$('#thing').click(function () {
transformThing();
});
});
正方形をクリックすると回転し、右下に移動します。これは、Safariを除いて、それが行うことです。Mac OS X 10.7.3 で Safari 5.1.5 を実行していますが、回転だけがアニメーション化されます。
同僚が、よりクリーンな構文で同じことを実行できるこの jQuery プラグインを見つけましたが、同じ問題が発生します。
Web Inspector を見ると、top: と left: の値が変化していることがわかります。実際、これらは正しい値に変化しています。ただし、オフにして再度オンにしない限り、要素の視覚的なレイアウトには影響しません。
明らかに、答えは「ええと、それは Safari のバグです」です。しかし、回避策を見つけるのに役立つ可能性のあるより深い説明や、他に試すことができるものはありますか?