css3篇——box-sizing

这一篇介绍一个css3的属性——box-sizing

什么是box-sizing

box-sizing是css3的一个属性,它用来改变默认的css盒模型对元素宽高的计算方式。这是什么意思呢?

css中的盒模型分为两种,一种是w3c的标准模型,一种是IE的传统模型,至于这两种模型的区别后面再说,box-sizing就是决定使用哪一种模型。

box-sizing用法

box-sizing: content-box;                     //默认值,让元素维持w3c的标准模型

box-sizing: border-box;                      //让元素维持IE的传统模型

box-sizing: inherit;                              //规定从父元素继承box-sizing的值

注意:IE只有IE8以上的版本才支持box-sizing,其他浏览器使用时也加上各自的前缀

比如:

div {

box-sizing: content-box;

-moz-box-sizing: content-box;                   //firefox

-webkit-box-sizing: content-box;               //safari

-o-box-sizing: content-box;                        //opera

-ms-box-sizing: content-box;                     //IE8以上

}

box-sizing: inherit就不用介绍了,这里重点介绍一下content-box和border-box

box-sizing:content-box(w3c标准模型)

content-box,是默认值,此时维持元素是w3c标准模型,开始就说了box-sizing是决定对元素宽高的计算方式,那w3c标准模型的计算方式是怎样的呢?

元素外盒的宽度/高度 = 内容的宽度/高度+内边距+边框的宽度/高度+外边距

元素内盒的宽度/高度 = 内容的宽度/高度+内边距+边框的宽度/高度

用个例子来说明,如下:

上面的例子就很容易看出

元素外盒的宽度 = 100px(内容的宽度)+10px(内边距)+2px(边框的宽度)+10px(外边距)

元素内盒的宽度 = 100px(内容的宽度)+10px(内边距)+2px(边框的宽度)

box-sizing:border-box(IE的传统模型)

border-box,此时维持元素是IE的传统模型,w3c的标准模型和IE传统模型的区别就是计算元素的宽高不同,下面是IE传统模型的计算方式:

元素外盒的宽度/高度 = 内容宽度/高度(包含了元素实际内容的宽度/高度、内边距、边框宽度/高度)+ 外边距

元素内盒的宽度/高度 = 内容宽度/高度(包含了元素实际内容的宽度/高度、内边距、边框宽度/高度)

下面的这个例子的数据均与content-box中的例子数据一致


从上面就很直观的看到

元素外盒的宽度 = 100px(内容宽度)+10px(外边距)

元素内盒的宽度 = 100px(内容宽度)

从content-box和border-box这两个例子,我们可以得到,w3c标准模型中设置的元素宽高就等于实际内容宽度,而IE传统模型中设置的元素宽高不只是实际内容宽高,还包括边框宽高和内边距

content-box和border-box分别什么时候用

我们肯定都遇到过这个问题,当把两个块元素并排放在一行,各占50%时,你再给它们增加一点内边距,外边距或者border,都会使第二个块元素跳到下一行,比如下面这个例子:

正常情况下是这样的

当添加一个border后就变成这样了


这时候我们就可以用box-sizing: border-box;了


之所以加上border-box就不换行了,是因为添加box-sizing:border-box后border:1px blue solid并没有额外添加

红色模块的盒子宽度,它只是压缩了原来的红色内容1px,留给了1px给边框,因为边框的宽高就是包含在元素内容

的宽高里面的。

这种情况下用border-box,那不需要的时候当然就是用content-box了,不过content-box不需要写,因为如果不

加box-sizing:border-box的话,默认就是content-box

好了,box-sizing就暂时总结到这了,以后遇到没有总结到的内容会再添加。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值