24 - Sticky Nav
步驟
Step1. 取得頁面元素並偵測選單到頂部的高度
1 2 3 4
| const nav = document.querySelector('#main');
let topOfNav = nav.offsetTop;
|
Step2. 對CSS增加樣式fixed-nav
1 2 3 4 5 6 7 8 9 10 11 12 13
| .fixed-nav .site-wrap { transform: scale(1); }
.fixed-nav nav { position: fixed; box-shadow: 0 5px rgba(0,0,0,0.1); }
.fixed-nav li.logo { max-width: 500px; }
|
Step2. 進行網頁捲軸高度偵測,決定是否變更選單樣式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function fixNav() { if (window.scrollY >= topOfNav) {
document.body.style.paddingTop = nav.offsetHeight + 'px'; document.body.classList.add('fixed-nav'); } else { document.body.style.paddingTop = 0; document.body.classList.remove('fixed-nav'); } }
window.addEventListener('scroll', fixNav);
|
其他
這個也是比較基礎的小練習,比較特別的是體驗到網站切換時使用transform: scale()
來作些微縮放在視覺上感受滿棒的。
[DEMO]