--- tags: Bootstrap5網頁切版整合術 --- # 8. 使用 Bootstrap 完成 Blog 版型 [我的練習檔](https://codepen.io/tinchen/full/poLYbZV) ## 結構 ![](https://i.imgur.com/CuVeMw7.jpg) * 導覽列: 行動版選單可左右滾動 * 首頁背景: 桌機文字占畫面一半,行動版滿版呈現 * 卡片: 行動版圖片隱藏 ### point * 複製root變數,手動調整字體 * 選單左右滾動加上`overflow-auto.flex-nowrap.text-nowrap` * 水平卡片排版技巧 ## 環境 [參考官網範例](https://getbootstrap.com/docs/5.2/examples/blog/) 1. 建立基本環境,引入bs css link 2. 複製root變數,手動調整字體: 建立一個html檔輸入任意中文,用開發者工具查看:root的地方,把文字變數`--bs-font-sans-serif`複製,在`<style>`輸入:root貼進來 3. 搜尋微軟正黑體的中英文'Microsoft JhengHei',微軟正黑體, 加在系統字體後方 ![](https://i.imgur.com/okH4zLD.png) ```css <style> :root{ --bs-font-sans-serif: system-ui,-apple-system,'Microsoft JhengHei',微軟正黑體,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; } </style> ``` ## 導覽列 ![](https://i.imgur.com/CvvNhmK.png) ![](https://i.imgur.com/8PAIjuc.png) * 導覽列: 行動版選單可左右滾動 1. 整個內容置中用 .container 包起來,新增 `<header>` `.link-dark` a 連結用 link-xx `.text-decoration-none` 不需文字底線 2. 元件>導覽與頁籤 (nav and tabs) 3. nav行動版: 在`nav`外層`div`加上`.overflow-auto`, 預設會換行所以要再加上`.flex-nowrap`不換行, 文字也要加上`.text-nowrap` ## 首圖背景 ![](https://i.imgur.com/velpM17.png) ![](https://i.imgur.com/PTQPVYC.png) * 首頁背景: 桌機文字占畫面一半,行動版滿版呈現 1. 內容>文字排版>顯示標題 `h1.display-4.fst-italic` `p.lead` 2. 文字桌機版占畫面一半,這裡主要是套用寬度,所以可以用`.col-md-6`外層不包`.row` ,行動版不需額外調整可滿版呈現 3. 背景圖: 背景圖若只有使用一次,可以直接寫在行內的`<style>`。 部份情況會從後端套用圖片,寫了css後就不好套用 4. `.link-xx` 會使用較深色的色彩,但白色已無較深的,所以`<a>`改套用`.text-white` 5. `<p>`段落預設有下向的margin,將`<a>`清除`.mb-0` 6. 新增一個.bg-cover套用到背景圖,將圖填滿、定位在中間 ```css .bg-cover{ background-position: center center; background-size: cover; } ``` ## 水平卡片排版技巧 (整個版型最複雜的地方) ![](https://i.imgur.com/Hasm0tS.png) ![](https://i.imgur.com/XJodffk.png) 1. 結構.row>.col*2>.card>.col+.col-4 ![](https://i.imgur.com/V4LoCak.jpg) 2. `.card`預設是`.flex-direction: column`,因版型文字在左圖片在右,所以要再加上`.row.flex-row.g-0`把軸向改回來 * gutter是0的時候`.row .g-0`可以跟`.card`放同一層 ![](https://i.imgur.com/UxubWMr.png) 3. 行列式排版: 在`.row`加上` .row-cols-1 .row-cols-lg-2` 行動版單欄桌機版雙欄 4. 行動版圖片設定隱藏`.d-none .d-md-block` 5. `.card`內文不同時產生不等高,所以要加上`.h-100`讓兩個卡片等高,每張卡片都要加 ![](https://i.imgur.com/jAU8FAI.png) 6. 將左邊內文區塊,轉成flex形式,並且把"繼續閱讀"推到下方,就不受內文多寡影響,都可以對齊最下方 * 將`.p-4`這一層轉為`.d-flex.flex-column.h-100`,在`<p>`設定`.mb-auto`把"繼續閱讀'推到底部 * `<a>`設定`.stretched link` ![](https://i.imgur.com/VqmW0wk.png) ## 內文及側欄安排 ![](https://i.imgur.com/acf8Big.png) * 左側.row>(.col-md-8>artcle)+.col-md-4 * 右側用 `.d-none .d-lg-block` 隱藏 新增一個div把內容都放進來,用`.sticky-top`、 `style="top:10px"`固定 ## Footer 製作 footer要新增在.container下方 ![](https://i.imgur.com/UamO2Sm.png) <!--20220822 ok--> ## QA <!--20220821--> ![](https://i.imgur.com/VvikgVf.png) ![](https://i.imgur.com/7E2R61p.png) 挖屋~原來如此,數字只算一個單字,後來用中文測試,高度會隨內容自適應延伸,右側圖片也因為.align-items-stretch會拉伸到到與內容同樣高度