Files
sechskies/developer-rules/session-logs/2026-07-08-bootstrap-homework.md

4.3 KiB
Raw Permalink Blame History

對話紀錄:Bootstrap 5 作業(2026-07-08

這份是這次對話的重點備份,不是規範檔。規範仍以 developer-rules/rules/ 為準。

起因

老師的 Bootstrap 5 課堂範例重點:Navbar、RWD 格線(container/row/col)、錨點導覽、Carousel(同頁多組需不同 id、可放進 grid 欄位)。目標是做成符合本站風格的作業/作品展示頁,而不是照抄範例或做成教學筆記。

過程與轉折

  1. 第一版extra/hw-bootstrap.html 初版):做成「Bootstrap 元件練習誌」,內容偏向解釋 navbar/grid/carousel 是什麼 → 被打回,因為變成讀書筆記,沒有應用在專案內容上。
  2. 第二版:改寫同一檔案為「精華牆」,用真實內容(淪陷瞬間/完整的六顆/黃色留聲機/現場的震撼/Yellow Note)取代教學說明,Bootstrap 降到最後一行小字帶過。
  3. 另外新增一頁 extra/bootstrap-navbar-carousel.html(跨時空精選):HeroSticky Navbar 錨點導覽+兩組不同 id 的 Carousel(一組放進 grid 欄位)+Grid 卡片區+結尾備註,符合站主指定的頁面結構規範。
  4. 最後一個任務:把 Bootstrap 實際套進首頁,但不能動到 index.html 本體 → 建立備份 index-bootstrap.html,只在這份備份裡:
    • 把既有的 <nav class="portal-nav" data-portal-nav> 疊加 navbar navbar-expand-lg navbar-dark 等真正的 Bootstrap navbar class(不碰 assets/js/portal-nav.js)。
    • #timeline「SECHSKIES STORY ARCHIVE」下方新增一排錨點快覽(傳奇誕生/凍結世界/完整回歸/夢境成真/九月首演/溫柔陪伴/未完待續),對應到下面每張時間軸卡片的新增 id

過程中修掉的 bug(都只影響 index-bootstrap.html

  • Bootstrap Reboot 蓋掉全站底色/字體/邊距 → 用同量級純標籤選擇器(body.home-page{}h1~h6,p,ul...{}a{})疊在 Bootstrap 後面蓋回來。
  • .section-title 間距被吃掉:一開始誤用 body.home-page h2{margin:0}(class+type)優先權太高,蓋過 .section-title 自己的 margin-bottom:20px。改回純標籤選擇器 h2{margin:0},優先權只贏 Bootstrap Reboot,不會贏 class 選擇器。
  • 頁尾連結變 Bootstrap 預設藍色底線.studio-link 沒有專屬顏色規則,靠全站 a{color:...}撐著,被 Bootstrap 同量級的 a{} 蓋掉,補回 a{color:var(--color-text);text-decoration:none}
  • 手機版漢堡選單失效Bootstrap 的 .navbar{display:flex} 沒寫在 media query 裡,跟站上桌機/手機兩種 .portal-nav 版面同量級、且載入在後,兩種寬度都被蓋成桌機版。改成照原本 max-width:991px 斷點分別把桌機/手機版面疊回去;另外先前加的 #portal-primary-menu id 選擇器優先權太強、蓋掉手機收合邏輯,已移除(内層 .portal-nav>ul 等選擇器本來就贏過 Bootstrap 的 navbar-nav/nav-link,不需要額外處理)。
  • 錨點跳轉被 sticky nav 擋住/卡片年代標籤被裁切:改用 JS 即時量測 .portal-nav 實際高度,加 24px 緩衝(年代標籤 ::after 用絕對定位貼在卡片外側),寫進 CSS 變數 --home-nav-offset,取代原本用猜的固定值。

最終異動檔案

檔案 狀態
extra/hw-bootstrap.html 新增(精華牆)
extra/bootstrap-navbar-carousel.html 新增(跨時空精選)
extra/site-guide.html 新增兩行參照(未動其他內容)
index-bootstrap.html 新增(index.html 的 Bootstrap 版備份,index.html 本體全程未動)

學到的教訓(給下次疊 Bootstrap 到既有頁面用)

  • 疊 Bootstrap 到已有完整樣式系統的頁面時,优先權要「剛好贏過 Bootstrap 同層級選擇器」就好,不要過度加 class/id 硬贏,否則會反過來蓋掉站上原本更細緻的規則(尤其是響應式 media query 那些)。
  • 純標籤選擇器(h2{}a{})配合「寫在 Bootstrap CDN 連結之後」就足以贏過 Bootstrap Reboot,且不會蓋過站上任何 class 選擇器。
  • 凡是原本就有分斷點(@media)的規則,疊加保護時也要照原本的斷點分開寫,不能只複製其中一種寬度的版本。