---
# System prepended metadata

title: '[JS30] Day.24 Sticky Nav'
tags: [JS30]

---

# [JS30] Day.24 Sticky Nav 
###### tags: `JS30`
## 任務 Task
當滑到導覽列時，固定導覽列，並有 logo 從左滑出的效果。

==完成時間：10min==
## 步驟 Step
1. 監聽 `window` 的 `scroll event`。
2. 當導覽列的 `offsetTop` 小於 `window.scrollY` 時，加入 `position: fixed` 的 `class` 使導覽列固定住，其他情況則 `remove`。
3. 因為 `position: fixed` 的效果，會造成導覽列的位置浮出，而底下資料往上移。所以在 `fixed` 同時更改 `document.body.style.paddingTop` 為導覽列的高度，其他情況則設 0 。 
4. logo 滑出效果則在 `CSS` 裡設定。
## 筆記 Note
### <font color=#337EA9>CSS fixed & sticky 的差別</font>
1. `fixed` 會獨立一層，脫離文件，`sticky` 不會。
2. `fixed` 固定在視窗範圍，滾動頁面時，物件不會移動；`sticky` 固定在父層，滾動在父層時，物件不會移動，滾動滑出父層時，物件會跟著移動。
