盒子模型的理解

概述

  • 网页设计中常听的属性名:内容(content)、填充(padding)、边框(border)、边界(margin),CSS盒子模型都具有这些属性,也主要是这些属性。css

  • 这些属性咱们能够把它转移到咱们平常生活中的盒子(箱子)上来理解,平常生活中所见的盒子也就是能装东西的一种箱子,也具备这些属性,因此叫它盒子模型。web

  • CSS盒子模型就是在网页设计中常常用到的CSS技术所使用的一种思惟模型。浏览器

  • 盒子模型是css中一个重要的概念,理解了盒子模型才能更好的排版。其实盒子模型有两种,分别是 ie 盒子模型和标准 w3c 盒子模型。他们对盒子模型的解释各不相同。spa

标准盒子模型

从上图能够看到标准 w3c 盒子模型的范围包括 margin、border、padding、content,而且 content 部分不包含其余部分。设计

ie 盒子模型

从上图能够看到 ie 盒子模型的范围也包括 margin、border、padding、content,和标准 w3c 盒子模型不一样的是:ie 盒子模型的 content 部分包含了 border 和 pading。code

例:一个容器的 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=90px,盒子的实际大小为:宽 200px、高 50px。blog

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

一、提示:背景应用于由内容和内边距、边框组成的区域。
二、提示:内边距、边框和外边距能够应用于一个元素的全部边,也能够应用于单独的边。
三、提示:外边距能够是负值,并且在不少状况下都要使用负值的外边距。

浏览器兼容性

一旦为页面设置了恰当的 DTD,大多数浏览器都会按照上面的图示来呈现内容。然而 IE 5 和 6 的呈现倒是不正确的。根据 W3C 的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 padding 和 border 值是另外计算的。不幸的是,IE5.X 和 6 在怪异模式中使用本身的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。
虽然有方法解决这个问题。可是目前最好的解决方案是回避这个问题。也就是,不要给元素添加具备指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。it

那咱们开发的时候选择哪中盒子模型呢?
确定是“标准 w3c 盒子模型”。怎么样才算是选择了“标准 w3c 盒子模型”呢?很简单,就是在网页的顶部加上 doctype 声明。假如不加 doctype 声明,那么各个浏览器会根据本身的行为去理解网页,即 ie 浏览器会采用 ie 盒子模型去解释你的盒子,而 ff 会采用标准 w3c 盒子模型解释你的盒子,因此网页在不一样的浏览器中就显示的不同了。反之,假如加上了 doctype 声明,那么全部浏览器都会采用标准 w3c 盒子模型去解释你的盒子,网页就能在各个浏览器中显示一致了。
因此为了让网页能兼容各个浏览器,让咱们用标准 w3c 盒子模型。class

CSS3 box-sizing 属性

定义和用法

box-sizing 属性容许您以特定的方式定义匹配某个区域的特定元素。
box-sizing有两个值一个是content-box,另外一个是border-box
当设置为box-sizing:content-box时,将采用*标准模式*解析计算,也是默认模式;
当设置为box-sizing:border-box时,将采用*怪异模式*解析计算;
目前使用此属性须要前缀以下:

-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box|border-box|inherit;

例如,假如您须要并排放置两个带边框的框,可经过将 box-sizing 设置为 "border-box"。这可令浏览器以怪异模式呈现出带有指定宽度和高度的框,并把边框和内边距放入框中。

相关文章
相关标签/搜索