wengjq / Basics

前端基础知识

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CSS 盒模型

wengjq opened this issue · comments

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 时,将采用怪异模式解析计算;

20160429135909362

3、 box-sizing 的应用场景

  • 设置子类元素的 margin 或者 border 时,可能会撑破父层元素的尺寸,这时我就需要使用 box-sizing: border-box 来将 border 包含进元素的尺寸中,这样就不会存在撑破父层元素的情况了。

  • 表单中有一些 input 元素其实还是展现的是传统IE盒模型,带有一些默认的样式,而且在不同平台或者浏览器下的表现不一,造成了表单展现的差异。此时我们可以通过 box-sizing 属性来构建一个风格统一的表单元素。