css1:盒模型

最近工作中有机会复习一下css的基本知识,那么先从css的盒模型开始吧,因为这是当时进现在这家公司笔试的第一题:怎么把IE盒模型变成标准盒模型?
嗯,有办法,box-sizing: border-box;就可以啦。
嗯,过关啦,那么标准盒模型和怪异盒模型分别是什么东西呢?

盒模型

包括content-内容,padding-内边距,border-边框,margin-外边距。具体参见链接描述

常见的css盒模型分两类:怪异(IE)盒模型和标准盒模型,两种盒模型有着很大的不同。

提出组织元素宽度计算方式(高度计算类比宽度)
标准盒模型w3ccontent宽度
怪异(IE)盒模型IEcontent宽度 + padding值 + border值

用图片表示可能更形象一点:
css1:盒模型

css1:盒模型

上文说过,有办法让这两种盒模型互相转换,那就是通过box-sizing这个属性:

box-sizing就是告诉浏览器怎么去计算一个元素的宽高。

有两个取值:content-box和border-box,分别对应两种计算方式。
content-box只包含元素内容的宽度。如果给设置了border或者padding,元素的总宽度就要加上border和padding值。
border-box包含元素内容的宽度,padding和border值。
实例如下:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="css/style.css" rel="stylesheet">
        <style>
            div{
                width: 100px;
                height: 100px;
                background: grey;
                padding: 50px;
                border: 30px solid pink;
                text-align: center;
            }
            .content-box{
                /* 默认的box-sizing: content-box; */
            }
            .border-box{
                box-sizing: border-box;
                margin-left: 30px;
            }
        </style>
    </head>
    <body>
    <div class="content-box">content box</div>
    <p>分割线</p>
    <div class="border-box">border box</div>
    </body>
</html>

结果如下:

css1:盒模型

相关推荐