箱上漿

預設的盒子模型(content-box)可能是違反直覺的,因為一旦你開始向元素新增 paddingborder 樣式,元素的 width / height 就不會在螢幕上顯示它的實際寬度或高度。

以下示例演示了 content-box 的這個潛在問題:

textarea {
    width: 100%;
    padding: 3px;
    box-sizing: content-box; /* default value */
}

由於填充將被新增到 textarea 的寬度,因此得到的元素是寬度大於 100%的 textarea。

幸運的是,CSS 允許我們使用元素的 box-sizing 屬性更改框模型。可用屬性有三種不同的值:

  • content-box:常見的盒子模型 - 寬度和高度僅包括內容,而不是填充或邊框

  • padding-box:寬度和高度包括內容和填充,但不包括邊框

  • border-box:寬度和高度包括內容,填充以及邊框

StackOverflow 文件

要解決上面的 textarea 問題,你可以將 box-sizing 屬性更改為 padding-boxborder-boxborder-box 是最常用的。

textarea {
    width: 100%;
    padding: 3px;
    box-sizing: border-box;
}

要將特定的盒子模型應用於頁面上的每個元素,請使用以下程式碼段:

html {
    box-sizing: border-box;
}

*, *:before, *:after {
    box-sizing: inherit;
}

在此編碼中,box-sizing:border-box; 不直接應用於*,因此你可以輕鬆地在單個元素上覆蓋此屬性。