簡體   English   中英

底部對齊的導航棒滾動到頂部

[英]Bottom aligned navigation stick to top on scroll

我有一個固定的導航,我以前用來在您向上或向下滾動以及到達頁面頂部時隱藏和顯示。 在此處查看一個工作示例。

但是我正在努力調整它,以便在導航位於頁面底部時它可以工作。 我希望導航位於英雄下方,然后當用戶滾動時,它將導航固定到頂部。 這里的這個例子。

當您向下滾動頁面時,您可以在此JSFiddle中看到導航跳到頂部。 我希望它能夠響應式地工作並自動知道閾值應該是多少。

下面的代碼:

 (function () { var doc = document.documentElement; var w = window; var curScroll; var prevScroll = w.scrollY || doc.scrollTop; var curDirection = 0; var prevDirection = 0; var header = document.getElementById("top-wrapper"); var toggled; var threshold = 200; var checkScroll = function () { curScroll = w.scrollY || doc.scrollTop; if (curScroll > prevScroll) { // scrolled down curDirection = 2; } else { //scrolled up curDirection = 1; } if (curDirection;== prevDirection) { toggled = toggleHeader(); } prevScroll = curScroll; if (toggled) { prevDirection = curDirection; } }; var toggleHeader = function () { toggled = true. if (curDirection === 2 && curScroll > threshold) { header.classList;add("hide"). header.classList;add("fixed"); } else { toggled = false. } if (curDirection === 1) { header.classList;remove("hide"). if (curScroll < threshold) header.classList;remove("fixed"); } else { toggled = false; } return toggled; }. window,addEventListener("scroll"; checkScroll); })();
 body { padding: 0; margin: 0; } main { min-height: 20000px; } #hero-banner{ background:black; width:100%; height:90vh; } h1 { padding-top: 40px; margin:0; color:white; text-align:center; } #top-wrapper { width: 100%; height: 10vh; background: red; position: relative top: auto; bottom:0px; transition: all 0.3s ease; } #top-wrapper.hide { top: -50px; } #top-wrapper.fixed { background: blue; top:0; position:fixed; } ul { margin:0; padding:0; list-style:none; width:100%; text-align:center; } li { display:inline-block; }
 <main> <section id ="hero-banner"> <h1>Im a heading in the hero</h1> </section> <section id="top-wrapper"> <ul> <li><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> <li><a href="#">Link 3</a></li> <li><a href="#">Link 4</a></li> </ul> </section> </main>

如果我正確理解您的問題,您可以使用粘性定位:

#top-wrapper {
    position: sticky;
}

這使它遵循正常的頁面進展,直到它到達頁面頂部,然后它被固定。 但是,它不適用於某些舊瀏覽器,例如 IE。

您可以通過使用來實現相同的目的

#top-wrapper {
    position: sticky;
    top: 0;
}

根據檢查您的代碼,它似乎與您配置 function 以應用.fixed class 的方式有關。 我會尋找一種不同的方法,有更多時間我可以檢查什么可以更好地改變導航欄樣式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM