iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0

昨天完成了基本的網頁版型,今天要來做一個小小的互動:按鈕切換頁面內容。這個功能常見於網頁中,例如:商品頁面切換「介紹 / 評價」、音樂網站切換「歌手 / 專輯」。


HTML

在 body 裡面加了切換按鈕區塊和兩個內容區域:
https://ithelp.ithome.com.tw/upload/images/20250919/20168364jzAFSaktrh.png
https://ithelp.ithome.com.tw/upload/images/20250919/20168364TyVx2a3WvX.png
這裡有兩個重點:

  • class="active" 代表目前顯示的內容或被選中的按鈕。
  • id (aboutBtn, musicBtn) 會給 JavaScript 使用。

CSS

把按鈕做成一個切換區塊,效果像「標籤切換」:
https://ithelp.ithome.com.tw/upload/images/20250919/20168364I2XK3xEP9y.png
https://ithelp.ithome.com.tw/upload/images/20250919/20168364p9sIg0gRLX.png
這樣就能確保只有一個內容區塊會顯示。


JavaScript

接著讓兩個按鈕「控制」內容顯示:
https://ithelp.ithome.com.tw/upload/images/20250919/201683645GFr2BJZ1h.png
這段程式碼的邏輯:

  • 點擊按鈕 → 加上 .active 樣式 → 顯示對應內容 → 隱藏另一個。
  • 用 classList.add/remove 來切換狀態。

前四行:取得按鈕內容
功能:
透過 document.getElementById() 從 HTML 文件中獲取四個元素,根據它們的 id 屬性:

  • aboutBtn: 「About Keshi」按鈕。
  • musicBtn: 「Music」按鈕。
  • aboutContent: 「About Keshi」內容區塊。
  • musicContent: 「Music」內容區塊。

解釋:

  • document.getElementById() 是 JavaScript 的 DOM API,用來查找具有指定 id 的 HTML 元素。
  • 使用 const 聲明變數,表示這些變數不會被重新賦值。

中間部分:切換至About Keshi
功能:
為 aboutBtn(About Keshi 按鈕)添加一個點擊事件監聽器,當按鈕被點擊時執行指定的回調函數。

解釋:

  • aboutBtn.addEventListener("click", () => { ... }):
    • addEventListener 是 DOM 元素的方法,用於監聽特定事件(這裡是 "click")。
    • 當用戶點擊 aboutBtn 時,執行箭頭函數(=>)中的程式碼。
  • aboutBtn.classList.add("active"):
    • 為 aboutBtn 元素添加 CSS 類別 active,通常用來改變按鈕的樣式(例如高亮顯示,表明它是被選中的標籤)。
  • musicBtn.classList.remove("active"):
    • 移除 musicBtn 的 active 類別,確保只有一個按鈕處於活躍狀態。
  • aboutContent.classList.add("active"):
    • 為 aboutContent 區塊添加 active 類別,使其顯示(通常透過 CSS 控制顯示/隱藏)。
  • musicContent.classList.remove("active"):
    • 移除 musicContent 的 active 類別,使其隱藏。

後半部分:切換至Music
功能:
與上面的程式碼類似,這段為 musicBtn(Music 按鈕)添加點擊事件監聽器,當點擊時切換到「Music」內容。

解釋:

  • 邏輯與 aboutBtn 的處理相反:
    • 為 musicBtn 添加 active 類別(高亮 Music 按鈕)。
    • 移除 aboutBtn 的 active 類別(取消 About Keshi 按鈕的高亮)。
    • 為 musicContent 添加 active 類別(顯示 Music 內容)。
    • 移除 aboutContent 的 active 類別(隱藏 About Keshi 內容)。

效果:
點擊「Music」按鈕時,網站顯示 Keshi 的音樂相關內容,同時隱藏「About Keshi」內容。


成果展示

  • 預設顯示 About Keshi。
  • 點擊 Music → 下方換成專輯清單。
  • 點擊 About Keshi → 回到介紹內容。
    https://ithelp.ithome.com.tw/upload/images/20250919/20168364wbmFQS5Iah.png
    https://ithelp.ithome.com.tw/upload/images/20250919/20168364FCL0ypQe8t.png

上一篇
專案實作-網頁首頁雛形
下一篇
CSS 進階(Flexbox / Grid)
系列文
打造專屬於歌手的音樂資訊網頁:從零開始的前端實作與技術分享7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言