0,前言

在css2.1 之前,我们都熟知的两种盒模型,一种是w3c标准盒模型,另外一种是怪异模式下的盒模型。在css3之前我们一直使用的是标准盒模型,但是标准盒模型的宽度总是需要小心的去使用,稍有不甚,有会带来混乱。css3让我们之前了解的怪异模式能够很好的在页面中使用,下面来了解下上面提到的w3c标准盒模型和怪异模式下的盒模型。

  1. div {
  2. width: 200px;
  3. height: 100px;
  4. padding: 20px;
  5. border:30px solid blue;
  6. margin: 10px;
  7. background: red;
  8. }
下面来看看,上面的代码和标准盒模型和怪异模式下的盒模型表现形式有什么不同。

1,w3c标准盒模型

在网页中,每一个元素都是一个盒模型,我们称为盒子,要想写出好的网页,就需要去了解盒子是怎么组成的,达到心中有数的境界。
一个标准的盒子是由 内容+内边距+边框+外边距,这里的内、外边距四边都是有的,看你怎么去设定了,而我们在样式中使用的width 指的盒子的内容,内边距和边框的修改都会改变整个元素的大小。background 背景是由 内容 + 内边距 构成的,下面看一个图


这是上面那张图的盒模型,加上外边距的话,整体宽度是 320,整体高度是220
这里的 200X100 是样式中声明的宽度和高,也就是我们的内容,接下来是内边距,内容盒内边距组成的部分就是红色背景的部分,接下来就是 边框 30 ,外边距10 。
width = 内容 + 内边距 + 边框
标准盒模型的缺点就是,一个元素的整体宽和高,要根据内、外边距、边框的改变去调整内容的宽高,也就是样式中我们所使用的宽、高。

2,怪异模式下盒模型

怪异模式则是使用浏览器自己的方式解析执行代码,因为不同浏览器解析执行的方式不一样,所以我们称之为怪异模式。浏览器解析时到底使用标准模式还是怪异模
式,与你网页中的DTD声明直接相关,DTD声明定义了标准文档的类型(标准模式解析)文档类型,会使浏览器使用相应的方式加载网页并显示,忽略DTD声
明,将使网页进入怪异模式(quirks mode)。
怪异模式IE8以下独有的。
简单的说,文档声明的正确与否决定了,浏览器解析模式,是否使用怪异模式,即错误的文档声明会进入怪异模式
那我们现在故意写错文档声明,进入怪异模式下,探个究竟:

怪异模式下:width = 内容 + 内边距(两边的) + 边框 ,高度是不可预订的(至少看起来是这样的)
有没有发现什么,怪异模式下的盒子,不必担心我们对内边距和边框的修改来改变整体元素的宽度,而导致页面混乱,但是它的缺点是只在IE8 以下,我们不可能编写页面时使用这种模式,因为我们要兼容大多数浏览器。况且它的高度还是不可预订的。
警告:了解即可,切勿使用

3,CSS3 盒模型

现在我们来认识下css3中的盒模型属性 box-sizing ,它有三个属性
content-box 默认值,维持w3c 标准盒子
border-box 和IE怪异模式下相同,盒子的宽度 = 内容宽度+ 内边距 + 边框
inherit 继承父元素的盒模型模式

这里主要介绍border-box 这个值,虽然和怪异模式下很像,但还是有区别的,就是它的高度 等于height,它可以广泛的去使用,因为它是标准哦,重要的是它支持 IE8 以上浏览器、以及其他浏览器
但是在IE下面使用的时候,一定不要进入怪异模式,使用 border-box 即可,如果进入怪异模式,即使使用 border-box ,也是没有效果的,这个是我不小心误入的。

在正常模式下,IE8 下设置 box-sizing: border-box; 完美的使 width = 内容 + 内边距 + 边框; height = 内容 + 内边距 + 边框; 


上面是 border-box 的兼容情况(是不是发现可以大胆的使用了),附上地址 http://caniuse.com/#search=box-sizing

css3 盒模型的更多相关文章

  1. CSS3盒模型温故

    CSS有一种基础设计模式叫盒模型,定义了Web页面中的元素是如何看做盒子来解析的.每一个盒子有不同的展示界面,下面就来介绍盒模型,主要有一下几种盒模型:inline.inline-block.bloc ...

  2. CSS3盒模型display:box详解

    display:box;box-flex是css3新添加的盒子模型属性,它的出现可以解决我们通过N多结构.css实现的布局方式.经典的一个布局应用就是布局的垂直等高.水平均分.按比例划分. 目前box ...

  3. css3 盒模型记

    css3 盒模型 css假定每个元素都会生成一个或多个矩形框,这称为元素框.各元素框中心有一个内容区.这个内容区周围有可选的内边距,边框和外边距.这些项之所以被认为是可选的,原因是它们的宽度可以设置为 ...

  4. 第94天:CSS3 盒模型详解

    CSS3盒模型详解 盒模型设定为border-box时 width = border + padding + content 盒模型设定为content-box时 width = content所谓定 ...

  5. 5.css3盒模型--margin/border/padding/content

    1.css3盒模型: ①margin外边距: Margin-top,Margin-right,Margin-bottom,Margin-left ②Border边框: Border-width Bor ...

  6. css3盒模型

    css2.1盒模型: 当你定义盒子的宽高后:如果添加padding和border值后盒子的宽高会被撑大 盒子的高度=定义的高度+(padding-top + padding-bottom)+(bord ...

  7. CSS3盒模型之box-sizing

    这些天在做一个手机端的页面,遇到了一些问题!首当其冲的就是盒子的溢出问题!大家都知道,手机的尺寸各异,各种型号的手机多得能闪瞎你们的眼睛,为了能 让这些设置更好的浏览我们的页面,我们已经不能固定页面的 ...

  8. CSS3盒模型——box-sizing

    box-sizing盒模型是CSS3的一个重要属性之一,常常被很多人给忽略了!CSS3出现之前box-sizing盒模型默认的宽高是指内容的宽高,css3之后可以用box-sizing来指定宽高. 目 ...

  9. CSS3 盒模型---css初始化会用到:box-sizing: border-box 盒子大小为 width 就是说 padding 和 border 是包含到width里面的

    CSS3中可以通过box-sizing 来指定盒模型,即可指定为content-box.border-box,这样我们计算盒子大小的方式就发生了改变. 可以分成两种情况: 1.box-sizing: ...

随机推荐

  1. java学习多线程之生产者消费者

    在java多线程当中还有一种关系需要我们来重点掌握,那就是生产者和消费者的关系.那么什么是生产者,什么是消费者呢?我们可以举个例子来说,有张三.李四负责生产烤鸭,王五.马六负责吃烤鸭,那么前者生产完烤 ...

  2. [主机/oracle/msyql] 监控脚本

    为了方便自己测试和监控,写了三个监控的脚本. 分别监控: 主机[cpu,mem,disk,fs,net] oracle mysql 脚本如下: hmon.py: monitor Linux os sy ...

  3. bzoj1028

    穷举水题 ..] of boolean;     q:..] of longint;     ans,count,jud:..] of longint;     x,i,j,n,m,tot,t,k:l ...

  4. xcode5.1 cocoapods报错

    Xcode升级到5.1了,apple默认让所有app都通过64位编译器编译,所以会报各种错误信息,关闭64位编译就好了. 选中Targets—>Build Settings—>Archit ...

  5. SharePoint 2010中使用SPListItemCollectionPosition更快的结果

    转:http://www.16kan.com/article/detail/318657.html Introduction介绍 In this article we will explore the ...

  6. Android Fragment类方法

    public void onStart() 当该Fragment对象对用户可见时,该方法会被调用.该方法通常会跟它的Activity的生命周期的Activity.onStart()方法绑定. publ ...

  7. (转载)查看三种MySQL字符集的方法

    (转载)http://database.51cto.com/art/201010/229171.htm MySQL字符集多种多样,下面为您列举了其中三种最常见的MySQL字符集查看方法,该方法供您参考 ...

  8. log4net封装类 zz

    封装说明: 1.使用静态方法调用即可写入日志. 2.在日志信息写入之前,定义委托处理日志信息,便于记录日志信息之前,显示给用户. 3.添加代码配置Log4net,避免应用程序总是携带配置文件.如果需要 ...

  9. 如何利用预编译指令来判断Delphi 的版本转载

    条件符号 含义 VERxx 编译器版本,XX表示版本,例如:Delphi 1.0 的编译器版本为80.Delphi 5.0 的编译器版本为130WIN32 是否WIN32的运行环境(Windows 9 ...

  10. StringHelpers

    public class StringHelpers { public const char QUERY_STRING_DELIMITER = '&'; private static Rijn ...