1

現在、ナビゲーションの左マージンをチェックし、それに応じて左にスクロールするこのコードがあります。ただし、この方法は遅いため、for ループまたは 200 の倍数ごとにキャッチして、それに応じてナビゲーションをアニメーション化するようなものに変更する方法を知りたいと思います。
これが現在の私のコードです。-5000 ect まで上げる必要がある場合、あまり効率的ではないことがわかります。
編集
これらは私の機能ですが、機能しません

    function goleft(){
    var nav = $("#innernavigation");
    var navmargin = parseInt(nav.css("margin-left"), 10);
    if (navmargin != 0)
    {
        //time!
        if (navmargin > -nav.width() && navmargin < -200)
        {   
            nav.animate({'marginLeft':'-' + ((Math.floor(navmargin / 200)-1) * 200) + 'px'});
        }
        if (navmargin > 0)
        {
            nav.css({'marginLeft':'0px'});
        }
    }
}
function goright(){
    var nav = $("#innernavigation");
    var navmargin = parseInt(nav.css("margin-left"), 10);
    if (navmargin != -nav.width())
    {
        //time!
        if (navmargin > 0 && navmargin < -nav.width())
        {   
            nav.animate({'marginLeft':'-' + ((Math.floor(navmargin / 200)-1) * 200) + 'px'});
        }
        if (navmargin < -nav.width())
        {
            nav.css({'marginLeft':'-' + nav.width()});
        }
    }
}
4

3 に答える 3

2

このようなことは、単一の if ステートメントで行うことができます。

if (navmargin > -5000 && navmargin < -200)
{
    nav.animate({'marginLeft': (-((Math.floor(navmargin / 200)-1) * 200) + 'px'});
}
于 2013-10-05T16:55:19.473 に答える
0
nav.animate({'marginLeft': (Math.floor(Math.abs(navmargin) / 200) * -200) + 'px'})
于 2013-10-05T17:04:02.170 に答える
0

簡単な推測です(まだテストされていません):

if (navmargin<-200 && navmargin>-5000) {
    nav.animate({'marginLeft':((navmargin%200-1)*-200)+'px'});
}
于 2013-10-05T17:07:12.823 に答える