box-sizing属性中的border-box学习分享

Posted david2009

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了box-sizing属性中的border-box学习分享相关的知识,希望对你有一定的参考价值。

box-sizing是css3新增的一个属性

其值有两个,分别是border-box和content-box

当我们给一个容器设置box-sizing为border-box时,就会出现一个很奇妙的现象

div {
    width: 300px;
    height: 100%;
    padding: 20px;
    margin: 20px;
    border: 10px solid teal;
}

大家来算算此时div容器本身的宽度是多少呢?

相信你已经算出来了, 此时div容器的宽度由 (content:) 300px + (padding-left + padding - right) + 20 * 2 + 10 * 2 (border-left + border-right) = 360px

那么当我们给box-sizing设置border-box又会发生什么呢?

div {
   box-sizing: border-box;
 }

此时计算方式发生了很大的改变, 当前div容器的宽度变为300px, 无论你如何设置padding或者border(前提设置的padding或者border值小于width的值),容器本身永远是300px;

300px - (border-left + border -right)  - (padding-left + padding-right) = 240px, 其中 240px是减去border和padding后剩余的宽度留作content区域使用,  

这种计算方式想必你想起来了,这不就是老IE版本盒子模型的计算方式吗???

对,还真没错, 老IE的盒子模型就是采用这种策略,当我们给一个容器定一个宽高,那么它就会一直都是给定的宽高的值,无论如何增加padding和border,仍然岿然不动,哈哈哈.这有个专业属于就是叫"混杂模式技术图片

 所以当我们开启了box-sizing: border-box的属性就相当于启用了IE混杂模式的行为

以上是关于box-sizing属性中的border-box学习分享的主要内容,如果未能解决你的问题,请参考以下文章

理解box-sizing属性border-box,content-box

box-sizing的相关属性

box-sizing: border-box;的作用

css3 box-sizing: border-box; 引起页面下拉抖动

css3 box-sizing属性

CSS3 box-sizing属性