【從零開始學JavaScript】實作練習 - 用Navbar實作RWD
Navbar
功能說明
- 標題
- 分頁連結(可隨視窗大小調整)
- 社群媒體(可隨視窗大小調整)
何謂RWD?
- RWD(Responsive Web Design/回應式網頁設計) : 是可讓伺服器一律向所有裝置發送相同的html程式碼之設定,並透過CSS調整網頁在裝置上的呈現方式。簡單來說,RWD能為所有裝置提供相同的程式碼,並根據螢幕尺寸,自動調整呈現方式。
CSS重點
- 一般情況下,導覽列(Navbar)有自己的許多Class,例如 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17/*Navbar*/
...
.nav-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1rem;
}
.nav-toggle {
font-size: 1.5rem;
color: var(--clr-primary-5);
background: transparent;
border-color: transparent;
transition: var(--transition);
cursor: pointer;
}
... - 但透過
@media screen可以去判斷,當視窗寬度大於800px時,同名的Class擁有不同的屬性,例如 :1
2
3
4
5
6
7
8
9...
@media screen and (min-width: 800px) {
.nav-header {
padding: 0;
}
.nav-toggle {
display: none;
}
...}
HTML重點
標題與選單按鈕 :
1
2
3
4
5
6
7
8
9
10<div class="nav-header">
<!-- 匯入標題圖片 -->
<img src="./logo.svg" class="logo" alt="logo"/>
<!-- 當視窗寬度小於800px時,顯示選單按鈕 -->
<button class="nav-toggle">
<!-- 引用Font Awesome的icon -->
<i class="fas fa-bars"></i>
</button>
</div>若想了解Font Awesome的用法介紹,可以查閱上一篇文章的內容!
選單連結 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14<ul class="links">
<li>
<a href="index.html">home</a>
</li>
<li>
<a href="about.html">about</a>
</li>
<li>
<a href="projects.html">projects</a>
</li>
<li>
<a href="contact.html">contact</a>
</li>
</ul>視窗大小呈現畫面不同,使用
class="link"去做控制社群媒體 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27<ul class="social-icons">
<li>
<a href="https://www.facebook.com">
<i class="fab fa-facebook"></i>
</a>
</li>
<li>
<a href="https://www.twitter.com">
<i class="fab fa-twitter"></i>
</a>
</li>
<li>
<a href="https://www.behance.com">
<i class="fab fa-behance"></i>
</a>
</li>
<li>
<a href="https://www.linkedin.com">
<i class="fab fa-linkedin"></i>
</a>
</li>
<li>
<a href="https://www.sketch.com">
<i class="fab fa-sketch"></i>
</a>
</li>
</ul>視窗寬度大於800px時才會顯示,使用
class = "social-icons"去控制
JavaScript重點
- 利用
class="nav-toggle"去抓取選單按鈕1
const navToggle = document.querySelector(".nav-toggle");
- 利用
class="links"去抓取選單連結1
const links = document.querySelector(".links");
- 將選單按鈕新增點擊事件
1
2
3navToggle.addEventListener("click", function () {
links.classList.toggle("show-links");
});- 使用
ClassList可以使用裡面的方法新增、刪除、修改節點上的CSS類,或判斷某個節點是否被賦予了某個CSS類。例如 :- add : 新增CSS
- remove : 移除CSS
- toggle : 當元素上沒有此CSS類時,它就新增這個CSS類;如果元素已經有了這個CSS類,它就是刪除該CSS類。總之,就是反轉操作,此方法適合拿來做下拉式選單。
- contains : 判斷某CSS類是否存在於元素中
- length : 回傳ClassList有幾個CSS類
- 使用
參考與引用來源
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Robin's Tech Blog!


