CSS 盒子模型 Box Model

CSS 盒子模型概述

  • element : 元素。css

  • padding : 内边距,也有资料将其翻译为填充。浏览器

  • border : 边框。ui

  • margin : 外边距,也有资料将其翻译为空白或空白边。spa


盒子模型有两种,分别是 IE 盒子模型和标准 W3C 盒子模型。 翻译

盒子模型是CSS中一个重要的概念,理解了盒子模型才能更好的排版。其实盒子模型有两种,分别是 IE 盒子模型和标准 W3C 盒子模型。他们对盒子模型的解释各不相同,先来看看咱们熟悉的标准盒子模型代理


和上面看到的图有些区别,这里把各属性支持也画出来。code

IE 盒子模型的范围也包括 margin、border、padding、content,和标准 W3C 盒子模型不一样的是:IE 盒子模型的 content 部分包含了 border 和 pading。 orm

一、W3C的标准Box Model:element

  /*外盒尺寸计算(元素空间尺寸)*/
  Element空间高度 = content height + padding + border + margin
  Element 空间宽度 = content width + padding + border + margin
  /*内盒尺寸计算(元素大小)*/
  Element Height = content height + padding + border (Height为内容高度)
  Element Width = content width + padding + border (Width为内容宽度)

 二、IE)传统下Box Model(IE6如下,不含IE6版本或“QuirksMode下IE5.5+”):it

  /*外盒尺寸计算(元素空间尺寸)*/
  Element空间高度 = content Height + margin (Height包含了元素内容宽度,边框宽度,内距宽度)
  Element空间宽度 = content Width + margin (Width包含了元素内容宽度、边框宽度、内距宽度)
  /*内盒尺寸计算(元素大小)*/
  Element Height = content Height(Height包含了元素内容宽度,边框宽度,内距宽度)
  Element Width = content Width(Width包含了元素内容宽度、边框宽度、内距宽度)

具体举例:
例:一个盒子的 margin 为 20px,border 为 1px,padding 为 10px,content 的宽为 200px、高为 50px,

若是用标准 W3C 盒子模型解释,那么这个盒子须要占据的位置为:宽 20*2+1*2+10*2+200=262px、高 20*2+1*2+10*2+50=112px,盒子的实际大小为:宽 1*2+10*2+200=222px、高 1*2+10*2+50=72px;

若是用IE 盒子模型,那么这个盒子须要占据的位置为:宽 20*2+200=240px、高 20*2+50=70px,盒子的实际大小为:宽 200px、高 50px

那应该选择哪中盒子模型呢?固然是“标准 W3C 盒子模型”了。怎么样才算是选择了“标准 W3C 盒子模型”呢?很简单,就是在网页的顶部加上 DOCTYPE 声明。若是不加 DOCTYPE 声明,那么各个浏览器会根据本身的行为去理解网页,即 IE 浏览器会采用 IE 盒子模型去解释你的盒子,而 FF 会采用标准 W3C 盒子模型解释你的盒子,因此网页在不一样的浏览器中就显示的不同了。反之,若是加上了 DOCTYPE 声明,那么全部浏览器都会采用标准 W3C 盒子模型去解释你的盒子,网页就能在各个浏览器中显示一致了

元素框的最内部分是实际的内容,直接包围内容的是内边距。内边距呈现了元素的背景。内边距的边缘是边框。边框之外是外边距,外边距默认是透明的,所以不会遮挡其后的任何元素。

提示:背景应用于由内容和内边距、边框组成的区域。

内边距、边框和外边距都是可选的,默认值是零。可是,许多元素将由用户代理样式表设置外边距和内边距。能够经过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式。这能够分别进行,也可使用通用选择器对全部元素进行设置:

* {
  margin: 0;
  padding: 0;
}

在 CSS 中,width 和 height 指的是内容区域的宽度和高度。增长内边距、边框和外边距不会影响内容区域的尺寸,可是会增长元素框的总尺寸。

假设框的每一个边上有 10 个像素的外边距和 5 个像素的内边距。若是但愿这个元素框达到 100 个像素,就须要将内容的宽度设置为 70 像素,请看下图:

#box {
  width: 70px;
  margin: 10px;
  padding: 5px;
}


提示:内边距、边框和外边距能够应用于一个元素的全部边,也能够应用于单独的边。

提示:外边距能够是负值,并且在不少状况下都要使用负值的外边距。



参考地址:http://www.w3school.com.cn/css/css_boxmodel.asp

相关文章
相关标签/搜索