box-sizing:border-box区别于box-sizing:content-box,后者是标准的盒模型,前者改变了对于宽度的界定。
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box
}
:before,
:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box
}
(bootstrap全局中设定该样式,据说是标准写法)
先从块级元素的盒子大小说起,通常一个块级元素实际所占宽高度=外边距(margin)+ 边界宽度(border-width) + 内边距(padding)+ 高度(height) / 宽度(width)
如果设置了border-box,实际所占宽高度 = 设置的高度(height)/ 设置的宽度(width)+ 外边距(margin);
- <style>
- #div1 {box-sizing:border-box; height:200px; width:200px; background:red; margin:10px; border:1px solid #000; padding:20px;}
- #div2 {box-sizing:content-box; height:200px; width:200px; background:red; margin:10px; border:1px solid #000; padding:20px;}
- </style>
- <div id="div1">border-box</div>
- <div id="div2">content-box</div>
设置他以后,相当于以怪异模式解析,border和padding全会在你设置的宽度内部,比如手机端设置两行并且的布局,宽度各为50%,如果不用这个属性,设置border后右边的div会下来错位,设置这个属性,宽度还是50%而不是50%+*px,两行可以并列显示