Skip to content

[css] initial/inherit/unset 有什麼差別呢?

Published: at 05:22 AM (3 min read)

常寫 CSS 應該都經常遇到樣式被覆蓋後不如預期希望回復為初始值等等的問題

常見的場景可能是使用 bootstrap, semantic 等等的 css framework 時,可能是 display, color 等等的屬性值被繼承或更改,希望回復為預設值或繼承至 parent.

另外在專門做網頁第三方元件,像是 disqus 這種必須放在百百種網頁上的元件,在技術規劃初期就將所有 CSS 做上 all: initial 更是一種選項!

以下就讓我們看看 initial/inhreit/unset 三者的差別吧 ~


讓我們來個簡單的例子,相信你也可以很簡單弄懂他們的差別 XD

首先有個 HTML:

<div class="wrapper">
  <p class="inherit">我是 inherit</p>
  <p></p>
  <p class="initial">我是 initial</p>
  <p></p>
  <p class="unset">我是 unset</p>
  <p>我什麼都不做</p>
</div>

然後對應的 CSS:

.wrapper {
  color: orange;
}
.wrapper p {
  color: purple;
}
p.inherit {
  color: inherit;
}
p.initial {
  color: initial;
}
p.unset {
  color: unset;
}

結果:

在 Chrome 上看的結果

看起來應該不難懂 XD

參考資料:

https://developer.mozilla.org/en-US/docs/Web/CSS/initial

https://developer.mozilla.org/en-US/docs/Web/CSS/inherit

https://developer.mozilla.org/en-US/docs/Web/CSS/unset

https://alligator.io/css/inherit-initial-unset/