2016-07-31 5 views
0

私は、次のコードを持っている:特定のアンカーに対してオフセットアンカー関数を作成する方法は?

function offsetAnchor() { 
    if(location.hash.length !== 0) { 
     window.scrollTo(window.scrollX, window.scrollY - 160); 
    } 
} 

     $(window).on("hashchange",offsetAnchor); 

     window.setTimeout(offsetAnchor, 1); 

を、私はアンカーをクリックすると、それが正しいアンカー-160画素に私をリード。しかし、私のページの各アンカーには特定のオフセットが必要です。

特定のアンカーだけで機能するように関数を指定するにはどうすればよいですか? 1つの関数内で複数のアンカーに複数のオフセットを与える方法はありますか?

答えて

0

何少しのようにそのコードをリファクタリングについて:

var anchorDistanceMap = { 
    "someAnchor": -160, 
    "otherAnchor": -400 
}; 

function offsetAnchor(distance) { 
    if (location.hash.length !== 0) { 
     window.scrollTo(window.scrollX, window.scrollY - distance); 
    } 
} 

$(window).on("hashchange", function (e) { 
    window.setTimeout(function() { 
     offsetAnchor(anchorDistanceMap[location.hash]); 
    }, 1); 
}); 

をそしてあなただけの各アンカーのために必要な距離を表すためにanchorDistanceMapオブジェクトを編集する必要があります。

+0

ありがとうございますが、私は "someAnchor"と "otherAnchor"の場所に何を入力するのか把握しようとしています。私はかなり大きいJS newbです。たとえば、これはオフセットしたいリンクのHTMLです。 ABOUT お手伝いがあればお知らせください、ありがとうございます。 – dillonjacobson12345

+0

そのオブジェクトは、ページ上の各アンカーのジャンプ(オフセット)する距離をマッピングします。 –

+0

さて、ありがとう、私はそれが働いているが、今私は最後の質問が1つあります。関数から免除されるように、 "otherAnchor"と呼ばれるアンカーが必要で、ページ上の標準位置にスクロールしたいとします。どのように私は1:関数から "otherAnchor"を免除するか、2: "otherAnchor"のanchorDistanceMapにどの値を入力してページ上のデフォルト位置に移動させるのですか? – dillonjacobson12345

関連する問題