0

このjsコードを検討してください。

function scroll(){
    $('.container').css('marginLeft', '-50%');
    $('.container').animate({'marginLeft': 0}, 300);
}​

例: http: //jsfiddle.net/aSXBL/3/

Safariには奇妙な動作があります。アニメーションは「左から右」ではなく「右から左」で発生します。いくつかの分析の結果、この場合、jQueryは正のマージン値からアニメーション化することがわかりました。

それはバグと見なされるべきだと思いますか、それともSafariの特定の「機能」と見なされるべきだと思いますか?この状況でどのような回避策が役立つ可能性がありますか?

ありがとう。

4

2 に答える 2

0

どうやらそれはバグです-パーセンテージは予期しない結果を返します(実際にはアニメーション関数に関連しているだけではありません)。見る:

console.log($('.container').css('marginLeft'));
// 10px as expected
$('.container').css('marginLeft', '-50%');
// object visually moved as expected
console.log($('.container').css('marginLeft'));
// this outputs 300px in Safari
于 2012-10-25T15:57:13.910 に答える
0

私も同じ問題を抱えていました。修正は、最新のブラウザーにはCSSトランジションを使用し、残りのブラウザーにはjQueryアニメーションを使用しています。私はmodernizrを使用して、どちらを提供するかを決定しました。これにより、Safari 5はCSSを使用するようになり、問題が回避されます。

if( !Modernizr.csstransitions ){
  $('#gallery .slides').animate({"margin-left":'-200%'}, 750);
} else {
  $('#gallery .slides').css({"margin-left":'-200%'});
}
            }
于 2013-01-24T22:08:13.760 に答える