前言
本文為「JavaScript 30」教學影片的學習筆記。
目標
讓導覽列在螢幕滾動到指定位置時更改樣式(固定在螢幕頂端)。
筆記
選取導覽列元素。
1
| const nav = document.querySelector('#main');
|
取得導覽列離螢幕頂端的距離。
1
| let topOfNav = nav.offsetTop;
|
建立一個 fixNav()
方法,以改變導覽列樣式。
1 2 3 4 5 6 7 8 9 10
| function fixNav() { if (window.scrollY >= topOfNav) { document.body.style.paddingTop = nav.offsetHeight + 'px'; document.body.classList.add('fixed-nav'); } else { document.body.classList.remove('fixed-nav'); document.body.style.paddingTop = 0; } }
|
監聽整個視窗,當發生 scroll
事件時,觸發 fixNav()
方法。
1
| window.addEventListener('scroll', fixNav);
|
修改 CSS 樣式表。
1 2 3 4 5 6 7 8 9 10 11 12
| body.fixed-nav .site-wrap { transform: scale(1); }
body.fixed-nav nav { position: fixed; box-shadow:0 5px 0 rgba(0,0,0,0.1); }
.fixed-nav li.logo { max-width:500px; }
|