Skip to content

CSS 的撰寫位置:外部樣式表、內部樣式與行內樣式

CSS 的三種撰寫位置:外部、內部與行內樣式

引用方式

CSS 可以透過以下三種方式引入到 HTML 文件 中。

  • 外部樣式表 (External Stylesheet):將樣式定義在獨立的 .css 文件中,並通過 <link> 標籤引用。也就是由一個 CSS 樣式檔案來控制數個網頁的排版與美化。

    html
    <link rel="stylesheet" href="./style/all.css">
  • 內部樣式表 (Internal Stylesheet):在 HTML 文件的 <style> 標籤中定義樣式。此方式就是將 CSS 樣式撰寫於該網頁檔案中,即只有該網頁內才可套用樣式,至於其他網頁則無法達成複用。

    html
    <style>
    h1 {
       color: blue;
    }
    </style>
  • 行內樣式 (Inline Style):直接在 HTML 標籤中使用 style 屬性。概念有些類似於上述的內部樣式表,都是撰寫在單一網頁之中;其不同點為行內樣式表是針對某一個標籤來撰寫,其他相同的標籤並不會套用到該樣式。

    html
    <h1 style="color: blue;">Hello, World!</h1>

適用時機

引用方式類型
外部樣式表專案站台
內部樣式表活動網頁EDM
行內樣式JavaScript 控制

三者的差異

比較項目外部樣式表內部樣式表行內樣式
可否跨頁共用
可否被快取
優先權一般一般最高
可否寫 偽類媒體查詢

行內樣式除了難以維護,還有一個常被忽略的限制:它沒辦法寫 :hover 這類偽類,也不能寫媒體查詢,因為它沒有選取器可言。

寫在哪裡

<link><style> 都請放在 檔頭 head 裡:

html
<head>
  <meta charset="UTF-8">
  <title>頁面標題</title>
  <link rel="stylesheet" href="./style/all.css">
</head>

瀏覽器要先取得樣式才能正確繪製畫面,樣式來得太晚,使用者會先看到沒有樣式的內容、再突然套上樣式。更完整的說明可參考 在 HTML 引入 CSS

小提醒

另一種引入方式 @import 也能載入樣式表,但它必須等前一份下載完才會開始下載,形成請求瀑布。想拆檔請改用多個 <link>,詳見 引入外部的樣式檔

常見問題

三種寫法的優先權誰高?

行內樣式最高,因為它直接寫在元素上;外部與內部樣式表本身權重相同,實際結果由 選取器權重 與書寫順序決定,後載入的會覆蓋前面的。

外部樣式表為什麼是首選?

樣式集中在一處、多個頁面共用,瀏覽器還會把它快取起來,使用者瀏覽第二頁時不必重新下載。維護時也只要改一個檔案。

行內樣式什麼時候才適合用?

由程式即時計算出來的值,例如:拖曳後的座標、依資料算出的長度。這類值無法事先寫進樣式表,才適合放行內;其餘情況都應該寫在樣式表裡。

樣式表要放在哪個位置?

放在 head 裡。瀏覽器要先取得樣式才能正確繪製畫面,樣式來得太晚,使用者會先看到沒有樣式的內容再突然套上,也就是俗稱的畫面閃爍。

延伸閱讀