2017-01-17 15 views
1

ページの上部に来ると、カスタム作成クラスを「スティッキー」にするスティッキーナビゲーションがあります。ページの更新後にナビゲーション位置が正しくない

これまでのところうまくいきますが、ページを更新すると、スクロールした直後にナビゲーションの位置が誤って検出され、スティッキーに配置されます。

私は、コードのこれらの関連する行います

var navigation = document.getElementById('navigation'), 
    rect = navigation.getBoundingClientRect(); 
var navigationPosition = rect.top - (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0); 

if (navigationPosition <= 0) { 
     if (!navigation.classList.contains('sticky')) { 
      navigation.classList.add('sticky'); 
     } 
    } else { 
     if (navigation.classList.contains('sticky')) { 
      navigation.classList.remove('sticky'); 
     } 
    } 

私はあなたが私を助けることを願って、私が間違って何をやっていますか? ありがとうございます!

jqueryを使用しない方法は非常に評価されますが、jQueryは必要に応じてこの作業を行う必要があります。

+0

'関数getCoords(ELEM){ VARボックス= elem.getBoundingClientRect()この関数を試してください。 return { top:box.top + pageYoffset、 left:box.left + pageXOffset }; } ' – Smiranin

+0

どこにこれを置くのですか? – winterWyvern

+0

私はそれをコードに追加し、前記navigationPosition = getCoords(navigation);しかし、これは動作しません – winterWyvern

答えて

0

このコードがお役に立てば幸いです。

var navigation = document.getElementById('navigation'), 
    navigationHeight = navigation.offsetHeight;// or you can set static value 



function init() { 

    window.addEventListener('scroll', slickNavigation); 

    slickNavigation(); 
} 


function slickNavigation() { 
    var scrolled = window.pageYOffset || document.documentElement.scrollTop; 


    if (scrolled >= navigationHeight) { 
      navigation.classList.add('sticky'); 

    } else { 
      navigation.classList.remove('sticky'); 
    } 
} 

init(); 
+0

ありがとう、これは正常に動作します!私はスクロールするヘッダーの高さを追加する必要があったので、あまりにもすぐにスティックしませんが、ページの更新時にもうまく動作します。 – winterWyvern

関連する問題