css3.0抢先看(九):box-sizing改变盒状模型结构

本文介绍如何使用CSS3中的box-sizing属性改变div元素的传统盒状模型布局方式,通过实例展示了如何将边框和填充置于内容区域之内。

文章来自www.css3s.cn

纵所周知div的盒状模型包括margin,border,padding和content四个部分.这四者的关系就无需我在这里班门弄斧啦.但是和今天主题又关的还是得说一下,那就是border里面是padding,padding里面是content.然而我们可以在css3.0中打破这一结构.使之变成content里面是border,border里面是padding.要实现这一切得建立在一个条件之下:box-dizing:border-box;

以下引用了个例子,该例子是针对firefox的,因为目前只有firefox,Safari 3和opera支持.

 

文本内容
文本内容.



代码如下:


<style type="text/css">
div.container {
    width:400px;
    border:10px solid black;
    height:40px;
}

div.split {
    -moz-box-sizing:border-box;
     width:50%;
     height:40px;
     border:10px silver ridge;
     float:left;
     padding:5px;
}
</style>
<div class="container">
<div class="split">文本内容</div>
<div class="split">文本内容.</div>
</div>

有兴趣的朋友可以在firefox中用firebug检验一下.
文章来自www.css3s.cn

### 逐行解析 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]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值