为什么要用box-sizing: border-box?一般什么时候用?

本文详细讲解了CSS中盒子模型的概念,包括标准盒子模型和border-box模型。通过实例演示了padding和border如何影响元素的实际占用空间,并介绍了使用border-box模型的优势,尤其是在自适应网页设计中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 1

    新建一个HTML文档,并定义一个块元素,CSS示例:

    .normal{width: 100px; height:100px; background: blue; }

  2. 2

    保存文件,预览效果,

  3. 3

    再次加入一个DIV并在原有的CSS上复制一份,加入Padding属性,示例:

    .normal-padding{

                width: 100px;

                height:100px;

                background: blue;

                /*加入padding属性*/

                padding:10px;

            }

  4. 4

    保存以上内容,比较两个DIV的区别

  5. 5

    再次复制normal-padding的CSS,并加入border属性,示例:

    .normal-padding-border{

                width: 100px;

                height:100px;

                background: blue;

                /*加入padding属性*/

                padding:10px;

                /*加入border属性*/

                border:10px solid red;

            }

  6. 6

    保存以上内容,比较三个DIV的不同:盒子元素模型,会随着padding和border元素的加入,而增加实际占用空间,

  7. 7

    定义一个border-box的DIV,复制.normal-padding-border的CSS,并加入一个box-sizing:border-box属性,示例:

     .border-box{

                width: 100px;

                height:100px;

                background: blue;

                /*加入padding属性*/

                padding:10px;

                /*加入border属性*/

                border:10px solid red;

                /*将盒子模型定义为boder-box*/

                box-sizing:border-box;

            }

  8. 8

    最终,保存以上内容,比较四个盒子模型得出如下结论:border-box定义的盒子,不会随着padding和boder的加入而增大盒子的占用空间

一般在写页面的时候用这个属性就不会再考虑边框和内边距会改变整体所占宽度,即不用再根据盒子模型再去计算,省去很多麻烦,一般在做自适应的网页设计的时候用,用这个属性网页结构才不会被破坏。
### 逐行解析 CSS 代码 `-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box` #### 1. `-webkit-box-sizing: border-box;` 此代码为 Webkit 内核浏览器(如 Chrome 和 Safari)提供兼容性支持,确保这些浏览器能够正确应用 `box-sizing: border-box` 的行为[^4]。具体来说,它改变了元素的盒模型计算方式,使得宽度和高度包含内边距(padding)和边框(border),而不是将它们加到指定的宽高之外。 #### 2. `-moz-box-sizing: border-box;` 此代码专门为 Mozilla Firefox 浏览器的 Gecko 内核提供兼容性支持,功能与 `-webkit-box-sizing` 相同,即改变盒模型计算方式,使宽度和高度包含内边距和边框[^4]。 #### 3. `box-sizing: border-box;` 这是标准的 CSS 属性定义,适用于所有现代浏览器,无需特定前缀。当设置为 `border-box` 时,元素的总宽度和高度包含了内容、内边距和边框。这意味着为元素设定的宽度和高度将同时包含这些部分,无论其内边距和边框如何变化[^2]。 例如: ```css .example { box-sizing: border-box; width: 200px; padding: 20px; border: 10px solid black; } ``` 在这种情况下,元素的实际宽度将始终保持为 200px,而不会因为内边距和边框的增加而超出指定宽度[^2]。 --- ### 兼容性意义 在早期的浏览器版本中,不同厂商对 CSS 规范的支持程度不一致,导致某些属性需要通过特定的前缀来实现跨浏览器兼容性。`-webkit-` 和 `-moz-` 前缀分别针对 Webkit 和 Gecko 内核浏览器提供了兼容性支持,确保即使在旧版浏览器中也能正确渲染样式。 随着浏览器技术的发展,大多数现代浏览器已经完全支持无前缀的标准属性 `box-sizing: border-box`,但仍保留前缀形式以向后兼容旧版浏览器。 --- ### 示例代码解析 以下是一个完整的示例,展示 `box-sizing: border-box` 的效果: ```css .imgBox img { width: 140px; height: 140px; padding: 20px; border: 20px solid orange; margin: 10px; } #contentBox img { -moz-box-sizing: content-box; -webkit-box-sizing: content-box; -o-box-sizing: content-box; -ms-box-sizing: content-box; box-sizing: content-box; } #borderBox img { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -o-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } ``` - 在 `#contentBox img` 中,使用了 `content-box` 模式,此时元素的宽度和高度仅包括内容区域,内边距和边框会额外增加到指定尺寸之外[^3]。 - 在 `#borderBox img` 中,使用了 `border-box` 模式,此时元素的宽度和高度包括内容、内边距和边框,实际渲染尺寸不会超出指定值[^3]。 --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值