Bootstrap 5 CSS 載入方式 (使用 CDN 方式引入)

Youtube-說明 Bootstrap 5 CSS 載入方式

快速開始 (Getting started)

點按下 Bootstrap 選單下的文件連結 (Docs) 就會進入到快速開始 (Getting started > Introduction) 的頁面,以英文版的文件中取用 CSS 與 JS 的連結。

CSS 將 <link> 標籤加入到 HTML 的 <head> 中,而 JS 的連結加入到 </body> (HTML 的 body 標籤) 的結尾處理。


環境設置確認

CSS 觀察:按鈕顏色是否有出來

引入 Bootstrap 5 的 CSS 與 JS 資源後,檢查是否有正常引入,使用元件按鈕 (Components > Buttons) 進行確任。

使用 CDN 方式引入 BootStrap 5 的結果。

See the Pen bootstrap-5-使用CDN引入方式 by Jimmy_Wu (@Jimmy_Wu) on CodePen.

使用初學者範本 (Starter template) 方式,一次引入 CDN 與基本 HTML 結構

直接將文件中的 Starter template 整個加入到 HTML 檔中運行,確任是否引入成功使用,在 <title>Hello, world!</title> 的下行加入 class="btn btn-primary" 按鈕確任。

加入結果。

See the Pen bootstrap-5-初學者範本 (Starter template) by Jimmy_Wu (@Jimmy_Wu) on CodePen.

到這裡的 Bootstrap 有正常的透過 CDN 方式引入 CSS 與 JS 的資源連結。

Bootstrap 的 JS 效果觀察

以 Bootstrap 中的互動視窗 (Modal) 做說明,在正常引入 Bootstrap 的 CSS 與 JS 後,就如進行元件的效果使用,確任 Bootstrap 的 JS 是否正常引入與使用。

加入下面的元件程式碼,進入到 HTML 結構中查看。

See the Pen bootstrap-5-JS 效果觀察-互動視窗 (Modal) by Jimmy_Wu (@Jimmy_Wu) on CodePen.


CDN、本地下載的差異

Youtube-CDN 說明

使用 CDN 方式取得 Bootstrap 資源檔

CDN 不使用實體檔方式,以線上連線方式取得資源

在本地資料夾下有個 index.html 檔,但實際運作可以將 bootstrap.css 檔 (實體檔案) 做為本地端。

而 CDN 就是直接將線上端的資源檔 bootstrap.css 直接由線上引入使用,而在本地端是不會有 bootstrap.css 有這支檔案在專案資料夾內。

CDN 的好處

CDN 是以線上伺服器取得資源檔方式取得,以 Bootstrap 來說可尋找最近所在地的伺服器取得檔案,像是在台灣就取用較近的伺服器取得。

CDN 與實體檔案的優缺點

以 CDN 方式取得資源檔的速度會比較快,是以連線方式取得最近伺服器中的檔案,另外可以省流量。
在實體檔案放置在自已主機端中,如果線上的連線要載入時都會是只有取用自已伺服器中的連結檔,所有流量都會是自已主機計算。

在使用者端透過網路開啟檔案時,會先載入主要的 HTML 檔 ( index.html ),而載入到使用者端後瀏覽器會再逐行解析內容,其中解析到 <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet"> 時,就會再透過 href="" 中的伺服器網址路徑與檔案格式取得檔案,也就是引入 bootstrap.css 檔,這樣就是使用 CDN 方式取得 Bootstrap 線上資源檔的方式。

比較直接將 boostrap.css 檔放置在自已的伺服器中,在使用者請求資料時就會針對一個主機要相關的資料與資源,這樣如果是伺服器流量是需要計費的話,計費的費用計算不便宜,但如果是使用 CDN 的話是免費也不會計算費用。

但如果是以自已的伺服器做為取用資源檔,可以比較不用擔心 CDN 版別面或是內容變化的問題。
比較 .css.js、與圖片檔案來計算流量,以圖片流量是做為八至九成,以處理流量的話主要是處理優化圖片為主。

六角學院官網使用 CDN 與本地下載的差異

六角學院官網 網頁中使用瀏覽器中的檢視原始碼查看 CDN 與本他資源的使用情形。

裡面見到二支 .css 的連結,其中 fontawesome 的連結是使用 CDN 的方式取用,主要是以字型 (webFont) 載入圖示。另外下面的 stylesheets/all.css 檔是使用 Bootstrap 本地端的方式以實體檔案,透過 SCSS 的方式合併成一支 .css 檔成為實體檔案。

fontawesome 的 icon 連結,裡面有許多不用的圖示使用。
另外還有像是 google 的線上字型也合適使用 CDN 方式取得線上資源,這當然也可處理成本機端自已的實體檔案,但比較不需要這樣在多增加自已伺服器的流量產生。

以實體檔案方式,下載 Bootstrap 相關資源檔

下載 Bootstrap 官方文件中已編譯的檔案

在官方文件中的 Getting started > Download > Compiled CSS and JS (編譯好的 CSS 和 JS) 的文件中,文件中會提到如下。

Compiled and minified CSS bundles (see CSS files comparison)
Compiled and minified JavaScript plugins (see JS files comparison)

接著會有一個下載的按鈕,點按後會下載編譯好的 Bootstrap 資源實體檔,會直接以 .zip 的壓縮檔下載。
解開後會 css 與 js 有二個資料夾,其中見到 css 資料夾中的 bootstrap.cssbootstrap.min.css

其中二支檔案的差別是差在有壓縮與未壓縮, bootstrap.min.css 的程式碼只有到第六行後就全處理成一行。

加入 bootstrap.css 與 bootstrap.js 檔到專案粢料夾中,做為實體檔案來使用

主要取用 css/bootstrap.min.css ,將 bootstrap.min.css 移入到專案資料夾中。
比對官方文件取用的也是 bootstrap.min.css

而 JS 檔的檔案取用置於下戴資料夾中的 js/bootstrap.bundle.min.js,對照官方文件是取用 bootstrap.bundle.min.js 檔。

此時的專案資料夾下的檔案結構如下。

使用文字編輯器,將 css 與 js 的連結進行更換,改成本地取用資源檔方式引入 Bootstrap。

瀏覽器的開發者工具引入資源檔成功或失敗的訊息

開啟瀏覽器的開發者工具,查看到 Network 面版下可查看到載入的相關檔案 (重新整理頁面引入),可查看裡面有 index.htmlbootstrap.min.cssbootstrap.bundle.min.js 三個檔案,另外將滑鼠移到上方都會顯示出 http://localhost:8080/xxx.xxx 的方式取得檔案。

但如果 index.html 引入的檔案路徑或是名稱有寫錯,此時在 Network 面版下就會出現 404 的錯誤,上面會顯示 404 Not Found 與紅字。

另外引入錯誤時的瀏覽器 Console 面版也會提示 (Not Found) 的紅字錯誤,會列出錯誤程式碼的行數。


瞭解 CSS Reset 與重置

什麼是 CSS Reset

Bootstrap 5 新手教學實戰營 – 第一堂錄影 下半部

瀏覽器的預設樣式

使用 <h2>副標是</h2> 在 Ghrome 瀏覽器會自行預設樣式,會自行在瀏覽器的中的 body 元素中會自帶 margin: 8px;

所以會將頁面上都內推 8px 的空間出來。

每個瀏覽器都會有自已的預設樣式,主要是針對不會使用 CSS 的開發者所規劃,但在每個預設樣式不同的情形下,就需要統一將樣式做重置達到統的的初始化。

CSS Reset 的版本使用與差別

以 Bootstrap 本身就有加入 CSS Reset 的 normalize 版本進去。
還有另外的版本 meyerweb CSS Tools: Reset CSS

版本一:meyerweb CSS Reset

meyerweb CSS Tools: Reset CSS 主要是將所有的樣式, marginpadding 都歸 0,行距統一都處理成一倍。

加入 meyerweb Reset CSS 的樣式查看結果

See the Pen meyerweb CSS Tools: Reset CSS,將所有預設樣式統一清空 by Jimmy_Wu (@Jimmy_Wu) on CodePen.


這裡可以見到,所有的字級與頁面中的邊距都做出清空的處理,這樣可以讓不同的瀏覽器達到預設樣式統一清空的畫面。

版本二:CSS Reset Normalize.css

官方 Normalize.css 連結
以 Bootstrap 所使用的 CSS Reset 是 Normalize.css。

Normalize.css 處理 body 是直接以 body { margin: 0; } 將邊距樣式清空,以自已處理樣式的一套方式重置,而 CSS Reset 主要取用一套處理就好。
Bootstrap 本身就有載入 Normalize.css,也就不用在加入一次 CSS Reset。

學習 Bootstrap 好處介紹

Bootstrap 主要為企業共通語言,另外可將後台樣版大多以 BS4 速行處理。
後台樣版 大多都會遇到 BS4。
可以選用指定的後台樣版來直接使用,以 SB Admin Angular 為例就是 Bootstrap 4 其中一個後台版型。

手寫、框架派 (Bootsrap) 的差別

以框架:Bootstrap 來說,讓團隊方便於接手與維護,主要是有一定的規範,在手寫的情形下會有過巢或是在沒規範下產出的程式碼,會有這樣的情形產生那不如就一開始直接以 Bootstrap 框架的規範方式撰寫。
以手寫:Bootstrap 所產生的樣式可能感覺上會長的很相近,主要也是受規範的影響,這多半是設計師所不樂見。

Bootstrap 的重置 (Reboot) 接續於 CSS Reset

在 Bootstrap 文件中的內容 > 重置 (Reboot),一開始會使用自已的字型設定。
這部份主要是處理全站設定與重置,有了全站設定與重置後才可以進行共用、頁面專用、元件的樣式規劃。

在 Bootstrap 文件中提到的 原生字體堆疊 (Native font stack) SCSS 變數設定。

以全站設定來說,使用 body {} 來做規劃,修改後如下。

See the Pen meyerweb CSS Tools: Reset CSS,加入全站字體設定 by Jimmy_Wu (@Jimmy_Wu) on CodePen.

除了可讓頁面中統一使用共用的基本字體設定外,在後面的樣式也可減少重覆撰寫來造成權重或是維護的問題產生,像是之後如果要加入 h1.footer.card 等樣式,也就不用在重覆撰寫一樣的字體設定。

body {} 的標籤樣式設定,主要是針對 <body></body> 的範圍內裡行樣設的設定。
* {}* (星號) 設定,是針對所有元素中全部進行設定,也可視為最外層的範圍。

Bootstrap 的標題和段落

在 Bootstrap 的標題和段落的部份,使用開發者工具查看到字級與樣式設定,h1 ~ h6 相關的字級統一使用 margin-top: 0margin-bottom: .5rem,段落添加了 margin-bottom: 1rem 以方便區分間隔。

code (行內程式碼) 與 pre (程式碼區塊) 標籤

加入 Bootstrap 的行內程式碼程式碼區塊的設定於 html 頁面中。

加入上面二個 HTML 結構於 Bootstrap 中,會顯示針對程式碼顯示的專屬樣式。


CSS Class 功能組合 (按鈕、卡片)

Boostrap 按鈕元件的容器與樣式分離

按鈕樣式透過疊加組合

以畫面上分別使用 .btn.btn-blue.btn-pink 的三種一樣大小但只有顏色不同的按鈕,可順利產生出按鈕,但對於 CSS 設定會多了很多重覆的程式碼出來。

See the Pen CSS Class 功能組合-未使用產生重覆的 CSS 設定 by Jimmy_Wu (@Jimmy_Wu) on CodePen.

使用 Bootstrap 的 CSS 模組設計觀念:容器與樣式分離進行處理,針對覆的程式碼重裡行重構。
主要是將色彩設定的部份獨立出來,透過共用 .btn 的基本樣式上在進行疊加,組合出不同色彩樣式但同大小的按鈕。

透過容器與樣式分離的方式,可以讓重覆的程式碼減少,由可進行其他相關樣式的擴充。
.btn 組合 .btn-blue 按鈕來看,會有二個疊加的部份使用,而 .btn 中的 background:color: 會被禁字畫線。

禁字畫線,這部份主要是 CSS 權重所影響,後面的樣式會透過權重蓋過權重較低或是較前面程式碼的樣式,這裡主要是受到將前面程式碼蓋過所影響。

.btn 主要做為基本的樣式,透過基本樣式在進行色彩與大小的擴充,另外也透過疊加組合產生出不同的按鈕樣式。

See the Pen CSS Class 功能組合-使用容器與樣式分離進行處理重覆的 CSS 設定 by Jimmy_Wu (@Jimmy_Wu) on CodePen.

Bootstrap 的按鈕,使用容器與樣式分離與權重

按鈕的觀念在 Bootstrap 的按鈕元件中也可見,
btn btn-primary 也是透過權重與樣式分離進行模組擴充,來產生新的按鈕。

查看到按鈕大小也是,透過 .btn-lg 加入 .btn 基底樣式上疊加,透過疊加後在組合出另外大小的按鈕出來。

開發者工具查看按鈕的滑入效果 (:hover)

Outline 按鈕樣式,也是同樣的觀念,透過權重進行樣式疊加。

如果要查看 a 標籤上的滑入效果,可以在開發者工具上指定要查看的元素,在 Elements 面版的右方會有 :hov 項目,點按後會展開類元素的行為效果,將 :hover 勾選起來後的按鈕就會呈現出一直滑入的狀態。
而如果要編輯或修改 :hover 就可以到 .btn-outline-primary:hover 的樣式進行修改。

Bootstrap 卡片元件的父層與子層的樣式與關係

Bootstrap 卡片 (Cards) 連結

卡片的標題 文字 連結 說明。

.card 的樣式裡翾有 .card-body 裡面在包著二個 .card-link,主要是以 .card- 做為關係連結命名。
有時在模組需要由上至下或是由左至名排列,主要可以透過 flxe-direction 來進行直或橫式排版。使用這樣的 CSS 屬性,就可以將排版處理成由上而下來排列。

接著在 .card-body 做為內層,以 .cord- 關連做為同系列的元件。

接著以卡片的頁首和頁尾三個區塊的元件說明

元件 .card 主要內部有 .card-header.card-body.card-footer 三個區塊構成,而 .card 內三個區塊可以由上而下排列,主要是因為使用到 display: flexflex-direction: column 的二個 CSS 屬性。

點按 display: flex 旁的小方框,就會出現 CSS flex 相關的設定,可透過點按後改變排版。

原本的 flex-direction: 設定是 column ,點按下面版內不同的 row 按鈕,此時由上而下排列就會變成由左至右。