盒模型是用来表示每一个元素所占用空间的大小。由4个区域组成,分别是内容区域、内边距区域、边框区域、外边距区域。这些区域分别对应了5个属性:css
width
和height
,宽度和高度padding
内边距border
边框margin
外边距代码演示:spa
div{ border:1px solid red; height:200px; width: 200px; padding: 40px; }
效果图:code
上面虽然指定了width
和height
为200px
,但实际上它的宽高是282px * 282px
。blog
这是由于盒模型是content-box
,它的宽高就是实际内容的宽高。增长内边距和边框不会影响内容区域的尺寸,但会增长元素的总尺寸。开发
使用content-box
写样式时,不太符合人类理解,通常会经过设置box-sizing
来改变它的盒模型。rem
使用border-box
,它的宽高就是元素的尺寸,也是内容区域宽高+内边距+边框。改变border
或者padding
的大小会影响内容区的大小。it
代码演示:class
div { box-sizing: border-box; border:1px solid red; height: 200px; width: 400px; padding: 40px; }
效果图:im
从这个效果图中能够看到,元素总的宽高是400px * 200px
,它的内容区域是318px
。内容区域+内边距+边框正好为400px
。d3
上面说到使用border-box
人类理解。
这是由于,在实际开发中,若是你要保证元素实际占有的宽高不变,就要在写width
时减去padding
,写padding
时减去width
。由于改变元素的实际大小每每是灾难性的。