盒子模型(Box Model)

关于更多CSS核心概念的文章请关注GitHub——CSS核心概念

当对一个文档进行布局的时候,浏览器的渲染引擎会根据标准之一的 CSS 基础框盒模型(CSS basic box model),将所有元素表示为一个个矩形的盒子。所有 HTML 元素可以看作盒子,在 CSS 中,Box Model 这一术语是用来设计和布局时使用。

CSS 盒模型本质上是一个盒子,封装周围的 HTML 元素,每个盒子由四个部分(或称区域)组成:内容(Content)内边距(Padding)边框(Border)外边框(Margin)盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

下面的图片说明了盒子模型(Box Model)

CSS 盒模型不同组成部分的说明:

  • Content(内容) - 由内容边界限制,容纳着元素的“真实”内容,例如文本、图像,或是一个视频播放器。
  • Padding(内边距) - 由内边距边界限制,扩展自内容区域,负责延伸内容区域的背景,填充元素中内容与边框的间距。当其取值为百分比时,该百分比都是相对于包含该元素的块的宽度(相对于该块的百分比)。
  • Border(边框) - 由边框边界限制,扩展自内边距区域,是容纳边框的区域。即围绕在内边距和内容外的边框。
  • Margin(外边距) - 由外边距边界限制,用空白区域扩展边框区域,以分开相邻的元素。当其取值为百分比时,该百分比都是相对于包含该元素的块的宽度(相对于该块的百分比)。

标准盒模型与怪异盒模型

盒子模型分为两种:第一种是 W3C 标准的盒子模型(标准盒模型) 、第二种 IE 标准的盒子模型(怪异盒模型)

当前大部分的浏览器支持的是 W3C 的标准盒模型,也保留了对怪异盒模型的支持,当然 IE 浏览器沿用的是怪异盒模型怪异模式是“部分浏览器在支持 W3C 标准的同时还保留了原来的解析模式”,怪异模式主要表现在 IE 内核的浏览器。

标准盒模型怪异盒模型的表现效果的区别:

  • 标准盒模型中 width 指的是内容(Content)区域的宽度;height 指的是内容(Content)区域的高度。标准盒模型下盒子的大小 = width + Border + Padding + Margin。
  • 怪异盒模型中的 width 指的是内容(Content)、边框(Border)、内边距(Padding)总和的宽度,即 width = Content + Border + Padding;height 指的是内容(Content)、边框(Border)、内边距(Padding)总和的高度。怪异盒模型下盒子的大小 =width + Margin

注意W3C 的标准盒模型IE 怪异盒模型主要区别是:盒模型中的 width 是否包含 border 和 padding。W3C 的标准盒模型的 width 不包含 border 和 padding,而IE 怪异盒模型的 width 中包含 border 和 padding。

浏览器如何解析盒模型

如果是定义了完整的 doctype 的标准文档类型,无论是哪种模型情况,最终都会触发标准模式,如果 doctype 协议缺失,会由浏览器自己界定,在 IE 浏览器中 IE9 以下(IE6、IE7、IE8)的版本触发怪异模式,其他浏览器中会默认为 W3C标准模式

设置盒模型解析模式

我们还可以通过设置 HTML 元素的 box-sizing 来设置盒子模型的解析模式

box-sizing 的属性值:

  • content-box: 默认值,border 和padding 不算到 width 范围内,可以理解为是 W3C 的标准模型
  • border-box:border 和 padding 划归到 width 范围内,可以理解为是 IE 的怪异盒模型
  • padding-box:将 padding 算入 width 范围

当设置为 box-sizing: content-box 时,将采用标准模式解析计算(默认模式),当设置为 box-sizing: border-box 时,将采用怪异模式解析计算。如:

<!-- 将 div 设置为怪异盒模型解析模式 -->
<div style="box-sizing: border-box;"></div>

关于更多CSS核心概念的文章请关注GitHub——CSS核心概念

CSS核心概念之盒子模型的更多相关文章

  1. CSS核心内容之盒子模型

    1.盒子模型具有的属性: 内容(content) 填充(padding) 边框(border) 边界(margin) 图示如下: 2.流概念 1.流的概念 在现实生活中已经流水,在网页设计中就是指元素 ...

  2. CSS——(2)盒子模型与标准流

    上篇博客<CSS--(1)基础>中简单介绍了CSS的概念和几种使用方法,现在主要是介绍其的核心内容. 盒子模型 为了理解盒子模型,我们可以先从生活中的盒子入手.盒子是用来放置物品的,内部除 ...

  3. css的两种盒子模型

    css的两种盒子模型:W3C标准盒子模型.IE盒子模型 两者的相同之处:都包含margin.border.padding.content 两者的不同之处:W3C标准盒子模型的content部分不包含其 ...

  4. CSS Box Model(盒子模型)

    CSS Box Model(盒子模型) 一.简介 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用. CSS盒模型本质上是一个盒子,封 ...

  5. [CSS属性设置,盒子模型,网页布局]

    [CSS属性设置,盒子模型,网页布局] CSS属性设置 1. 宽和高 width:属性可以为元素设置宽度. height:属性可以为元素设置高度. 块级标签的宽度不修改的情况下默认占浏览器的一整行,块 ...

  6. css笔记15:盒子模型

    1.流 流:html元素在网页中显示的顺序 标准流:在html文件中,写在前面的元素在前面显示,写在后面的html元素在后面显示. 非标准流:在html之中,当某个元素脱离了标准流,那么它处于非标准流 ...

  7. CSS学习笔记07 盒子模型

    1.盒子模型 所谓盒子模型就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器.每个矩形都由元素的内容.内边距(padding).边框(border)和外边距(margin)组成. ...

  8. css那些事儿2 盒子模型

    盒子模型是网页元素所占据页面窗口的矩形范围,是网页布局的核心基础之一,这里的盒子模型与我们平常收到的包裹类似. 一个包裹从内到外,分为真实物品部分,物品与外壳之间的填充区,外壳的厚度,当多个包裹放置在 ...

  9. CSS(5)---通俗讲解盒子模型

    CSS(5)---盒子模型 盒子模型四个关键字:内容(content).填充(padding).边框(border).边界(margin), CSS盒子模式都具备这些属性. 一.概念 1. 概念 盒子 ...

随机推荐

  1. 树剖裸题——BZOJ1036 树的统计

    #include<cstring> #include<cmath> #include<algorithm> #include<cstdio> #defi ...

  2. 化学键|甘氨酸|谷氨酸|半胱胺酸|motif|domain|疏水相互作用|序列相似性|clustering analysis|Chou and Fasman|GOR|PHD|穿线法|first-principle ab initio folding|

    化学键|甘氨酸|谷氨酸|半胱胺酸|motif|domain|疏水相互作用|序列相似性|clustering analysis|Chou and Fasman|GOR|PHD|穿线法|first-pri ...

  3. HDU-1403-Longest Common Substring(后缀数组的高度数组运用)

    这题要求两个串中的最长相同子串的长度.高度数组可以求一个串中的最长相同子串的长度.所以想到把两个串连起来,但是这样又会产生一些新的串(第一个串的结尾和第二个串的开头组成的)于是在两个串中间放一个'\0 ...

  4. MOOC(2)-Django开发get、post请求,返回json数据

    1.对get请求直接返回参数 如果请求多个参数,也只能返回一个参数,这里只返回了username参数 如果想要返回多个参数值,可以返回json格式数据 2.对get请求返回json数据 # views ...

  5. MOOC(1)-使用pycharm新建Django项目、开发post接口

    https://www.cnblogs.com/liqu/p/9308966.html 1.安装Django的两种方式: > 1) pip install django 2)下载离线安装包,进入 ...

  6. JSP Connect Database

    JDBC简介 在Java技术中,访问数据库的技术叫做JDBC,它提供了一系列的API,让Java语言编写的代码连接数据库,对数据库进行添加.删除.修改和查询. JDBC相关的API存在java.sql ...

  7. zookeeper 客户端连接报: Will not attempt to authenticate using SASL

    解决方法:我在学习zk的时候,用客户端连接zk,发现接收不到watch通知,并且报 如图所示错误: 后查看服务没问题:图示 后查看防火墙状态,关闭防火墙 连接后正常: 如果查看防火墙状态是dead,s ...

  8. Mybatis分页插件的使用流程

    如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件.该插件支持任何复杂的单表.多表分页. 1.引入PageHelper的jar包 在pom.xml中添加如下依赖: 12345 ...

  9. 利用Nginx或koa

    最近在做上传的图片的需求,思考上传之后的图片怎么访问的问题,因为后端是Node,一开始尝试写一个专门的接口通过传入图片的path来查找,试了一下感觉并不理想,因为要为每种类型的文件设置Content- ...

  10. DBFlow框架的学习笔记之入门

    什么是DBFlow? dbflow是一款android高性的ORM数据库.可以使用在进行项目中有关数据库的操作.github下载源码 1.环境配置 先导入 apt plugin库到你的classpat ...