浏览器盒模型

696 阅读1分钟

1.content-box和border-box之间的区别:主要在于它们在width,height属性中的区别

对于content-box只包含content部分的尺寸

对于border-box 包含border+padding+content三部分的总和

2.在CSS里有属性box-sizing属性可以设置 box-sizing: content-box | border-box | inherit


代码示例:

<!DOCTYPE html><html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>盒模型</title>
    <style>
        .box{
            width: 100px;
            height:100px;
            padding: 20px;
            border: 5px solid red;
        }
        .use-content-box{
            box-sizing: content-box;
        }        
        .use-border-box{
            box-sizing: border-box;
        }    
    </style>
</head>
<body>
    <div class="box use-content-box" >这是W3C标准盒模型</div>
    <div class="box use-border-box" >这是IE盒模型</div>
</body>
</html>

我们可以得到如图的结果:

对于content-box属性的div,由于它的宽度和高度只有content部分,因此内容宽高固定,padding和box的宽度将相当于向外扩展。最后整个div的宽高是150px=100px+20px*2+5px*2

          

而对于属性为border-box的div,它的宽高为content padding border 三部分的总和,因此content+20px*2+5px*2=100px,得出content部分宽高为50px。这种情况下padding和border相当于在向内挤压content部分。

                          


3.实际应用:当子容器的宽度设置为父容器的100%的时候,需要使用box-sizing: border-box; 来保证子容器的宽度不会因为padding和border的宽度而溢出。