box-sizing 的使用

本文详细介绍了CSS属性box-sizing的两种模式:content-box和border-box的区别及用法。解释了这两种模式下元素宽度和高度的计算方式,并给出了具体的使用场景。

box-sizing 的使用


(1)border-box:如果设置padding,内容往里面挤

内容的宽度:width减去(padding-left加padding-right)

元素的宽度:width

(2)content-box:如果设置了padding,往外面撑

 内容的宽度:width

元素的宽度:width加上(padding-left加padding-right)

 

语法

box-sizing: content-box|border-box|inherit;
描述
content-box

这是由 CSS2.1 规定的宽度高度行为。

宽度和高度分别应用到元素的内容框。

在宽度和高度之外绘制元素的内边距和边框。

border-box

为元素设定的宽度和高度决定了元素的边框盒。

就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。

通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。

inherit 规定应从父元素继承 box-sizing 属性的值。

### 逐行解析 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、付费专栏及课程。

余额充值