border-box fix
anything within <details> will have box-sizing: content-box, not border-box❗️ 📗 <details> & Shadow DOM & Inheritance
⭐️ 注意:此 fix 在 web componet 內對某些「不受繼承的屬性」沒有作用,例如:box-sizing,👉 詳見:<details>
🤔 為何不直接使用 * { box-sizing: border-box }
❓
主要是因為:如果網頁有使用第三方的網頁元件 (web component) 的話,那麼它所設定的 box-sizing 屬性,可能會與上面的設定相衝,這時要回復成網頁元件要的格式可能會有點麻煩。
但如果是使用 box-sizing: inherint 的方式,這時只要將網頁元件最上層的元素 (top-level container) 設定成 box-sizing: content-box,它以下的元素就會自動繼承此屬性,而不用我們一個一個手動改。
注意:margin 與 padding 不要用 inherit 的方式,否則你只要在 HTML 中改了某個元素的 margin 或 padding,它的所有子元素全部都會變成相同的 margin 與 padding,這通常不是我們要的。
Last updated