CSS框属性的基本规范中指出:文档的每个元素都被构造成文档布局内的一个矩形框,矩形框的每一层的大小都可以使用特定CSS属性进行调制。
![](https://i-blog.csdnimg.cn/blog_migrate/27c654ceebe4742525bf24db83e7acd8.png)
块元素的盒子模型结构
-
content
表示内容框是盒子中内容显示的区域,width
和height
属性用与设置内容框的宽度和高度。 -
padding
表示CSS框的内边框,位于内容框外边缘与边界的内边缘之间 -
border
表示CSS框的边界,它是一个分隔层,位于内边距外边缘与外边距的内边缘之间。 -
margin
表示CSS框的外边距,即CSS框周围的外部区域。
box-sizing
box-sizing
属性用于更改计算元素宽度和高度默认的CSS盒子模型,使用此属性可用来模拟无法支持CSS盒子模型规范的浏览器行为。
属性值 | 描述 |
---|---|
content-box | 默认,正常盒模型, width = content。 |
border-box | 异常盒模型,width = content + padding + border。 |
正常盒模型
正常盒模型是指块元素的box-sizing
属性为content-box
的盒模型,现代浏览器中使用的均为正常的盒模型,也是标准W3C的盒模型。
正常盒模型是指盒模型的大小仅包括content
部分,正常盒模型的大小以content
内容优先自动扩展,当内部元素超过父容器给定的大小时会将父容器撑大。
![](https://i-blog.csdnimg.cn/blog_migrate/2043a6b95d8d1fb8cef926b908529b48.png)
content-box
是指块元素内容的width
和height
决定了元素的宽度和高度,这意味着元素的border
和padding
不能计算在元素的width
和height
之中,padding
和border
的改变不会改变到元素的width
和height
。
box-sizing:content-box;
怪异盒模型
怪异盒模型是指块元素的box-sizing
属性设置为border-box
的盒模型,border-box
是在文档处于Quirks怪异模式时Internet Explorer默认使用的盒子模型,由于自身的特殊性,移动端页面也会使用到怪异盒模型。
![](https://i-blog.csdnimg.cn/blog_migrate/a9abcafbb5668c1cab903a3560e3f1d4.png)
怪异盒模型是先做盒子,然后再添加border
、padding
,最后再做content
。即保证盒模型优先,先做盒再放内容,不管内容是否放得下。一般移动端页面使用较多,在怪异盒模型中父容器的盒模型一旦确定,子元素是无法撑开父容器的盒模型的,只能在盒模型的剩余空间中进行展示。
border-box
是指元素的width
和height
由元素内容和padding
、border
三者共同决定,换句话说,元素的宽高受到内容宽度、padding
、border
三者的影响。
box-sizing:border-box;
默认情况下,元素的宽度等于内容框的宽度即width = content
,当使用box-sizing:border-box
属性控制后,框模型则会发生变化,此时元素的width = content + padding + border
。