css3 盒模型

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标准盒模型

在网页中,每一个元素都是一个盒模型,我们称为盒子,要想写出好的网页,就需要去了解盒子是怎么组成的,达到心中有数的境界。

官方定义:http://www.w3school.com.cn/css/css_boxmodel.asp

一个标准的盒子是由 内容+内边距+边框+外边距,这里的内、外边距四边都是有的,看你怎么去设定了,而我们在样式中使用的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

来自为知笔记(Wiz)

时间: 2024-08-08 09:41:32

css3 盒模型的相关文章

CSS3盒模型温故

CSS有一种基础设计模式叫盒模型,定义了Web页面中的元素是如何看做盒子来解析的.每一个盒子有不同的展示界面,下面就来介绍盒模型,主要有一下几种盒模型:inline.inline-block.block.table.absolute position.float.浏览器把每个元素看做一个盒模型,每个盒模型是由以下几个属性组合所决定的:display.position.float.width.height.margin.paddinghe border等,不同类型的盒模型会产生不同的布局 什么是盒

CSS3盒模型之box-sizing

这些天在做一个手机端的页面,遇到了一些问题!首当其冲的就是盒子的溢出问题!大家都知道,手机的尺寸各异,各种型号的手机多得能闪瞎你们的眼睛,为了能 让这些设置更好的浏览我们的页面,我们已经不能固定页面的大小了.所以很多时候我们对于大小的设置都需要使用百分比,嗯,试试看吧! 对于一个导航,我们初始是想这样: 代码如下: css: nav{width: 100%;background: #001125;overflow: hidden} nav a{display: block;float: left

css3盒模型

css2.1盒模型: 当你定义盒子的宽高后:如果添加padding和border值后盒子的宽高会被撑大 盒子的高度=定义的高度+(padding-top + padding-bottom)+(border-top + border-bottom); 盒子的宽度=定义的宽度+(padding-left+ padding-right)+(border-left+ border-right); css3.0盒模型: 当你定义盒子高度后:如果添加padding和border值后盒子大小不会改变,他会向内

CSS3盒模型display:box;box-flex:3;

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>盒模型display:box;</title> </head> <body> <article class=&q

CSS3盒模型display:box详解

display:box;box-flex是css3新添加的盒子模型属性,它的出现可以解决我们通过N多结构.css实现的布局方式.经典的一个布局应用就是布局的垂直等高.水平均分.按比例划分.目前box-flex属性还没有得到firefox.Opera.chrome浏览器的完全支持,但可以使用它们的私有属性定义firefox(-moz-).opera(-o-).chrome/safari(-webkit-).一.box-flex属性box-flex主要让子容器针对父容器的宽度按一定规则进行划分htm

[转]CSS3盒模型display:box详解

时间:2014-02-25来源:网络作者:未知编辑:RGB display:box;box-flex是css3新添加的盒子模型属性,它的出现可以解决我们通过N多结构.css实现的布局方式.经典的一个布局应用就是布局的垂直等高.水平均分.按比例划分. 目前box-flex属性还没有得到firefox.Opera.chrome浏览器的完全支持,但可以使用它们的私有属性定义firefox(-moz-).opera(-o-).chrome/safari(-webkit-). 一.box-flex属性 b

基础 - CSS3盒模型

content padding border margin 常见问题: W3C盒子下的width height和 IE盒子下的width height? W3C盒子下的width height padding内部的区域,即content IE盒子下的width height margin内部的区域,即content+padding+border CSS3的解决方案 /*以border为盒子界*/ box-sizing: border-box;

css3盒模型和弹性布局的相关属性

box-sizing 属性允许您以特定的方式定义匹配某个区域的特定元素.假如您需要并排放置两个带边框的框,可通过将 box-sizing 设置为 "border-box".这可令浏览器呈现出带有指定宽度和高度的框,并把边框和内边距放入框中.看了有些晕啊,看一下以下几个属性应该就懂了:1.content-box:宽度和高度分别应用到元素的内容框,在宽度和高度之外绘制元素的内边距和边框.例如: div{box-sizing:border-box; -moz-box-sizing:borde

CSS3盒模型阴影属性

CSS3盒子阴影 属性box-shadow也是CSS3新增的一个重要属性,用来定义元素的盒子阴影. inset: 阴影类型, 可选值. 如果不设置, 其默认的投影方式是外阴影: 如果取其唯一值" inset", 就是给元素设置内阴影. x-offset: 阴影水平偏移量, 其值可以是正负值. 如果取正值, 则阴影在元素的右边, 反之取负值, 阴影在元素的左边. y-offset: 阴影垂直偏移量, 其值可以是正负值. 如果取正值, 则阴影在元素的底部, 反之取负值, 阴影在元素的顶部.