box-sizing 的作用

本文深入解析了CSS中的盒模型,详细对比了content-box和border-box两种盒模型的表现方式。content-box模型下,元素的实际宽度等于设置的width值加上border和padding;而border-box模型下,元素的width值包含了border和padding,因此实际宽度等于设定的width,使得尺寸控制更加直观。

box-sizing:content-box | border-box

content-box:
padding和border不被包含在定义的width和height之内。对象的实际宽度等于设置的width值和border、padding之和,即 ( Element width = width + border + padding )
此属性表现为标准模式下的盒模型。
border-box:
padding和border被包含在定义的width和height之内。对象的实际宽度就等于设置的width值,即使定义有border和padding也不会改变对象的实际宽度,即 ( Element width = width )
此属性表现为怪异模式下的盒模型。
box-sizing 属性可以被用来调整这些表现:

content-box  是默认值。如果你设置一个元素的宽为100px,那么这个元素的内容区会有100px宽,并且任何边框和内边距的宽度都会被增加到最后绘制出来的元素宽度中。

border-box 告诉浏览器去理解你设置的边框和内边距的值是包含在width内的。也就是说,如果你将一个元素的width设为100px,那么这100px会包含其它的border和padding,内容区的实际宽度会是width减去border + padding的计算值。大多数情况下这使得我们更容易的去设定一个元素的宽高。

 

border-box  width 和 height 属性包括内容,内边距和边框,但不包括外边距。这是当文档处于 Quirks模式 时Internet Explorer使用的盒模型。注意,填充和边框将在盒子内 , 例如, .box {width: 350px; border: 10px solid black;} 导致在浏览器中呈现的宽度为350px的盒子。内容框不能为负,并且被分配到0,使得不可能使用border-box使元素消失。 

这里的维度计算为: width = border + padding + 内容的  width, height = border + padding + 内容的 height。
文章乃参考、转载其他博客所得,仅供自己学习作笔记使用!!!

转载于:https://www.cnblogs.com/Y1473/p/10260878.html

### 逐行解析 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]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值