box-sizing属性可以为三个值之一:content-box(default),border-box,padding-box。
content-box,border和padding不计算入width之内(默认属性)
padding-box,padding计算入width内
border-box,border和padding计算入width之内,其实就是怪异模式了。
我们经常遇到以下两种问题:
1.左右模块宽度为50%,加个边框或者padding会掉下去
2.width设为100%,加上padding,会出现滚动条。
加一个这个样式就能解决:
box-sizing:border-box;
-moz-box-sizing:border-box; /* Firefox */
-webkit-box-sizing:border-box; /* Safari */
案例:
html:
<body>
<div class="container">
<div class="box">这个 div 占据左半部分。</div>
<div class="box">这个 div 占据右半部分。</div>
<div style="clear:both;"></div>
</div>
</body>
css:
div.container
{
width:100%;
border:10px solid blue;
padding: 20px;
}
div.box
{
width:50%;
height:80px;
padding:10px;
border:10px solid red;
float:left;
}
效果图:
把外层div加上此属性:
div.container
{
width:100%;
border:10px solid blue;
padding: 20px;
box-sizing:border-box;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
}
div.box
{
width:50%;
height:80px;
padding:10px;
border:10px solid red;
float:left;
}
滚动条消失:
父级div和子div都加上此属性:
div.container
{
width:100%;
border:10px solid blue;
padding: 20px;
box-sizing:border-box;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
}
div.box
{
box-sizing:border-box;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
width:50%;
height:80px;
padding:10px;
border:10px solid red;
float:left;
}
效果图如下: