如何区分border-box和content-box

最近在准备面试,突然发现css很多内容虽然会用,但是却并不理解,下午的时候回顾了一下盒模型,发现可以根据盒模型的名称去理解盒模型,写出来和大家分享一下。
 
所有HTML元素可以看作盒子,在CSS中,“盒子模型”规定了处理元素内容(content)、内边距(padding)、边框(border)和外边距(margin)的方式。而盒子模型分为两种:标准盒模型(又叫w3c盒模型)和怪异盒模型(又叫ie盒模型)。
 
标准盒模型(content-box)和怪异盒模型(border-box)的区别是width和height设置的“部分”不同。为元素设置好width和height之后
标准盒模型的content范围内的高度和宽度是不变的,padding和border是在content的范围外进行增加,将盒模型撑大,content范围内的大小始终不变。刚好对应上标准盒模型的名称content-box。
怪异盒模型的border范围内的高度和大小是不变的,padding和border是在border范围内进行增加,会压缩content大小,border范围内的大小始终不变。刚好对应上怪异盒模型的名称border-box。
设置标准盒模型的样式代码是:
box-sizing: content-box;
而设置怪异盒模型的样式代码是:
box-sizing: border-box;
划重点:box-sizing我们可以根据字面意思理解为盒子的大小,属性值为content-box时可以理解为content范围内的大小不变,属性值为border-box时可以理解为border范围内的大小不变。刚好对应上了我们上面对标准盒模型和怪异盒模型的描述。
所以我们只要根据这两个盒模型的名称记住它们分别是哪一部分大小固定不变就好了。
 
下面再用例子说明一下:
假设一个盒模型的属性如下:margin:20px;border:5px;padding:10px;width:100px;height:50px。
代码如下:
 1     <style>
 2         body {
 3             background: yellow;
 4         }
 5 
 6         .content {
 7             box-sizing: content-box;
 8             width: 100px;
 9             height: 50px;
10             margin: 20px;
11             padding: 10px;
12             border: 5px solid orange;
13             background: green;
14         }
15 
16         .border {
17             box-sizing: border-box;
18             width: 100px;
19             height: 50px;
20             margin: 20px;
21             padding: 10px;
22             border: 5px solid orange;
23             background: green;
24         }
25     </style>
26     <div class="content">content-box</div>
27     <div class="border">border-box</div>
注:例子中计算盒子宽度/高度的加法顺序是margin+border+padding+content。
 
因为标准盒模型content范围内的大小是不变的,content的width为100px,高度为50px,
如果是标准盒模型,那么这个盒子模型占用的
宽度为(包括外边距):20*2+5*2+10*2+100=170px;
高度为(包括外边距):20*2+5*2+10*2+50=120px;
实际宽度大小为(不包括外边距):10*2+10*2+100=130px;
实际高度大小为(不包括外边距):10*2+10*2+50=80px;
 
因为怪异盒模型border范围内的大小是不变的,所以border范围内的width为100px,高度为50px(水平方向上border部分+padding部分+content部分=100px,同理竖直方向)
如果是怪异盒模型,这个盒子在页面中所占的大小为
宽度(包括外边距):20*2+100=140px;  =>相当于20*2+5*2+10*2+70=140px
高度(包括外边距):20*2+50=90px;  =>相当于20*2+5*2+10*2+20=90px
实际宽度大小为(不包括外边距):100px;5*2+10*2+70=100px
实际高度大小为(不包括外边距):50px;5*2+10*2+20=50px
 
显示效果如下:
 
以上就是我个人对css盒模型的理解,如果有错误的地方,请大家积极指出~

转载于:https://www.cnblogs.com/jansan/p/7747858.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值