盒子模型(一)——block box

盒子模型作为CSS的一个重中之重,被大众所熟知。但是我们平时讨论的盒子模型更多的是块级盒子(block box),其实还有一种盒子模型叫做行级盒子(line box),行级盒子我将在下一篇文章中讲述。

盒子模型

这就是我们所熟悉的盒子模型,包含了margin(外边距)、border(边框)、padding(内边距)、content(内容)。

  • Margin(外边距) - 清除边框区域。Margin没有背景颜色,它是完全透明
  • Border(边框) - 边框周围的填充和内容。边框是受到盒子的背景颜色影响
  • Padding(内边距) - 清除内容周围的区域。会受到框中填充的背景颜色影响
  • Content(内容) - 盒子的内容,显示文本和图像

这里写图片描述

块级盒子(block box)

对于块级元素,浏览器会采用block box模型来进行渲染。
不过,早期的IE和W3C有不同的解释。

IE盒子模型

早期的IE浏览器(IE6之前)采用IE盒子模型,现在多采用标准模式(W3C模式)

这里写图片描述

(content)width = content-width + padding-width + border-width
(content)height = content-height + padding-height + border-height

标准盒子模型(W3C盒子模型)

标准模式看起更加容易理解一点。

这里写图片描述

(content)width = content-width 
(content)height = content-height 

注意:
这里的高度和宽度并不是元素的真正宽高。这里的宽高指的是通过CSS设置的内容的宽高
(吐槽:网上被广泛传播的这个图,我一直以为是错的…)

box-sizing属性

box-sizing属性可以让我们自由选择盒子的模式。

box-sizing:content-box/border-box/inherit

content-box——默认值,采用Standard box model
border-box——采用IE box model
inherit——继承父元素属性值

借助这个属性,我们来看看到底IE盒子和W3C标准盒子到底有什么不同。

IE和W3C盒子的异与同

这里的padding和margin以及border为了书写方便,全部假定为左右值都相等,大家懂这个意思就好了。

W3C盒子

通过设置 box-sizing: content-box;,我们选定了W3C盒子模型。
图-W3C1:
这里写图片描述

图-W3C2:
这里写图片描述

通过W3C2我们可以明显的看出,contentWidth=width;即图阴影部分。
那么这个div元素的实际宽度(个人认为这个应该被称为做像素宽度)为:

contentWidth+padding*2+border*2+margin*2
=
100+50*2+0*2+200*2
=600px

IE盒子

IE盒子相比之下就显得很怪异了。
图-IE1:
这里写图片描述

在IE盒子的模式下,

contentWidth=width+padding*2+border*2

也就说我们设置了contentWidth=100px,但是由于padding*2=100px,所以把width的宽度消除了。
如果我们让padding=0,那么width则会恢复正常。
图-IE2
这里写图片描述

所以图-IE1中div元素的实际宽度(像素宽度)为:

width+margin*2
=
100+200*2
=500px

这里另外提一点,
如果
border+padding>width
那么
width=border+padding; contentWidth=0;
图—IE3
这里写图片描述


参考资料:
https://www.w3cschool.cn/css/css-boxmodel.html
https://www.w3.org/TR/CSS2/box.html
http://www.jianshu.com/p/fde40f0c20cb#
https://segmentfault.com/a/1190000005155084
https://segmentfault.com/a/1190000005116275#articleHeader11
http://www.cnblogs.com/fsjohnhuang/p/5259121.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值