1

これは今、私を狂わせています!- マージンを使用して要素「左」をアニメーション化したいと考えています。しかし、すべての子要素が表示されたら、同じ要素を反対方向にアニメーション化したいと思います。私のスクリプトはそれほど単純ではありませんが、似ています:

timer = setInterval(function(){
    var direction = ($('ul','.column').css('margin-left') <= 0)? '-=': '+=';
    $('ul','.column').animate({marginLeft:direction+($('li','.column').width())+'px'},500);
},1000);

$('ul,'.column').position().left <=0上記の条件の代わりに試してみました。私の問題は、負の変数margin-leftposition().left決して返さないことです:S. 変数「べき」が負の場合、常に 0 として返されます。アニメーションを反対方向に動かしたい位置を簡単に見つけることができますが、条件が負の数でない場合、これは機能しません。

-1000などではなくmargin-left、常に0として返される理由についての洞察をいただければ幸いです。position().leftしかし、代替ソリューションがあれば、私はまだ幸せです:)

4

1 に答える 1

3

jQuery の CSS margin-left は次のような文字列を返します:20pxを使用して「px」を取り除く必要があります

parseInt( $('ul','.column').css('margin-left') , 10 )

したがって、次のようになります。

timer = setInterval(function(){
    var margLeft = parseInt( $('ul','.column').css('margin-left') , 10);
    var direction =  margLeft<=0 ? '-=': '+=';
    $('ul','.column').animate({ marginLeft: direction+($('li','.column').width()) },500);
},1000);

また、Chrome には、CSS 内でアニメーションを適用するプロパティが指定されていない要素をアニメーション化するという問題があることをよく覚えています。

于 2012-12-29T11:55:46.633 に答える