CSS 盒模型
wengjq opened this issue · comments
wengjq commented
1、CSS 中 Box model 分类
CSS 中 Box model 是分为两种: W3C 标准 和 IE 标准盒子模型。
大多数浏览器采用 W3C 标准模型,而 IE 中则采用 Microsoft 自己的标准。
怪异模式是“部分浏览器在支持 W3C 标准的同时还保留了原来的解析模式”,怪异模式主要表现在 IE 内核的浏览器。
当不对 doctype 进行定义时,会触发怪异模式。
-
在标准模式下,一个块的总宽度 = width + margin(左右) + padding(左右) + border(左右)
-
在怪异模式下,一个块的总宽度 = width + margin(左右)(即 width 已经包含了 padding 和 border 值)
另一点需要说明的是,我们通过 JavaScript 代码获取某一个元素的大小时,所得到的 width 和 height 其实是盒子模型中的 content 的大小。
2、CSS3 的 box-sizing
box-sizing 语法:
box-sizing : content-box || border-box || inherit;
- 当设置为 box-sizing: content-box 时,将采用标准模式解析计算,也是默认模式;
- 当设置 为box-sizing: border-box 时,将采用怪异模式解析计算;
3、 box-sizing 的应用场景
-
设置子类元素的 margin 或者 border 时,可能会撑破父层元素的尺寸,这时我就需要使用 box-sizing: border-box 来将 border 包含进元素的尺寸中,这样就不会存在撑破父层元素的情况了。
-
表单中有一些 input 元素其实还是展现的是传统IE盒模型,带有一些默认的样式,而且在不同平台或者浏览器下的表现不一,造成了表单展现的差异。此时我们可以通过 box-sizing 属性来构建一个风格统一的表单元素。