箱上浆
默认的盒子模型(content-box)可能是违反直觉的,因为一旦你开始向元素添加 padding 和 border 样式,元素的 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:宽度和高度包括内容,填充以及边框

要解决上面的 textarea 问题,你可以将 box-sizing 属性更改为 padding-box 或 border-box。border-box 是最常用的。
textarea {
width: 100%;
padding: 3px;
box-sizing: border-box;
}
要将特定的盒子模型应用于页面上的每个元素,请使用以下代码段:
html {
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
}
在此编码中,box-sizing:border-box; 不直接应用于*,因此你可以轻松地在单个元素上覆盖此属性。