Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >理解标准盒模型和怪异模式&box-sizing属性

理解标准盒模型和怪异模式&box-sizing属性

作者头像
okaychen
发布于 2018-07-31 06:57:20
发布于 2018-07-31 06:57:20
57900
代码可运行
举报
文章被收录于专栏:前端那些事前端那些事
运行总次数:0
代码可运行

盒子模型 主要有两种,w3c标准盒模型,IE下的怪异盒模型,其实还有就是弹性盒模型(上篇文章我们用他很好的解决了对齐问题)

DTD规范

盒模型分为:标准w3c盒模型、IE盒模型、以及css中的伸缩盒模型

当我们使用编辑器创建一个html页面时,我们一定会发现最顶上的DOCTYPE标签

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<!DOCTYPE HTML>

这些doctype都是标准的文档类型,无论我们使用哪种模式都会触发标准模式,而如果doctype缺失,则在ie6、ie7、ie8将会触发怪异模式(quirks);

一旦为页面设置了恰当的DTD(文档定义类型),大多数浏览器都会按照标准盒模型来呈现内容,但是ie5和ie6的呈现却是不正确的.

根据w3c规范,元素内容占据空间是由width属性设置的,而内容周围的padding和border都是另外计算的。

不幸的是,IE5.X 和 6 在怪异模式中使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。

举个栗子

我们用一个div块来演示标准模式和怪异模式的区别:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.box{
    width:200px;
    height:200px;
    border:20px solid black;
    padding:50px;
    margin:50px;
}

标准盒模型

在标准模式下的盒模型如下图所示,盒子总宽度/高度=width/height+padding+border+margin

怪异模式

在怪异模式下的盒模型如下图所示,盒子的总宽度和高度是包含内边距padding和边框border宽度在内的

盒子总宽度/高度=width/height + margin = 内容区宽度/高度 + padding + border + margin;

也即是说 width = 内容区宽度 + padding + border

CSS3的box-sizing属性

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
box-sizing : content-box || border-box || inherit;

在css3中新增了box-sizing属性,具备了以上知识后,我们已经理解:

  • 当为content-box时,将采取标准模式进行解析计算
  • 当为border-box时,将采取怪异模式解析计算
  • 当为inherit时,将从父元素来继承box-sizing属性的值

参考

标准模式,怪异盒模型&box-sizing属性

w3c盒模型浏览器兼容性

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-12-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
盒模型和box-sizing
根据 W3C 的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 padding 和 border 值是另外计算的。不幸的是,IE5.X 和 6 在怪异模式中使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。
FinGet
2019/06/28
8050
盒模型和box-sizing
css面试点一:盒模型详解+遗漏点
可以说,页面就是由一个个盒模型堆砌起来的,每个HTML元素都可以叫做盒模型,盒模型由外而内包括:边距(margin)、边框(border)、填充(padding)、内容(content)。它在页面中所占的实际宽度是margin + border + paddint + content 的宽度相加。
用户10106350
2022/10/28
4650
css面试点一:盒模型详解+遗漏点
【前端芝士树】详解CSS盒模型、BFC、OffsetWidth&ClientWidth&ScrollWidth
2018搜狐前端笔试题 盒模型本质上是用以封装HTML元素的概念盒子,它包含了边距,边框,填充以及实际内容。 即由外向里是 margin, border, padding, content
CloudCat
2022/06/15
1.1K0
【前端芝士树】详解CSS盒模型、BFC、OffsetWidth&ClientWidth&ScrollWidth
CSS 盒子模型(Box Model)
内容区(content) 内容区是盒子模型的中心,它呈现了盒子的主要信息内容,这些内容可以是文本、图片等多种类型。内容区有三个属性,width、height 和overflow。使用width和height属性可以指定盒子内容区的高度和宽度,当内容信息太多,超出内容区所占范围时,可以使用overflow 溢出属性来指定处理方法。当overflow 属性值为hidden时,溢出部分将不可见;为visible时,溢出的内容信息可见,只是被呈现在盒子的外部;当为scroll时,滚动条将被自动添加到盒子中,用户可以通过拉动滚动条显示内容信息;当为auto时,将由浏览器决定如何处理溢出部分。
刘亦枫
2020/03/19
1.4K0
CSS 盒子模型(Box Model)
CSS之box-sizing的应用
在我们说box-sizing之前,我们先了解下前端经典的“盒子模型”,聪明的程序猿们巧妙的用盒子模型这一形象将枯燥的css代码表示出来:想象一个盒子,它有:外边距(margin)、边框(border)、内边距(padding)、内容(content)四个属性;这些加起来就是一个完整的元素。
OECOM
2020/07/01
4130
CSS核心概念之盒子模型
当对一个文档进行布局的时候,浏览器的渲染引擎会根据标准之一的 CSS 基础框盒模型(CSS basic box model),将所有元素表示为一个个矩形的盒子。所有 HTML 元素可以看作盒子,在 CSS 中,Box Model 这一术语是用来设计和布局时使用。
用户6167509
2020/03/18
1.1K0
css3 box-sizing属性
定义和用法 box-sizing 属性允许您以特定的方式定义匹配某个区域的特定元素。 例如,假如您需要并排放置两个带边框的框,可通过将 box-sizing 设置为 "border-box"。这可令浏览器呈现出带有指定宽度和高度的框,并把边框和内边距放入框中。 默认值: content-box 继承性: no 版本: CSS3 JavaScript 语法: object.style.boxSizing="border-box" box-sizing:content-box | border-box 默认值
deepcc
2018/05/16
7920
盒子模型
CSS盒子模型(Box Model)。在所有的HTML元素都可以看成一个盒子;在CSS中,Box Model这一术语被用来设计和布局中使用。
肥晨
2023/02/16
6910
CSS进阶02-盒模型进阶
(注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!) (注2:更多内容请查看我的目录。)
love丁酥酥
2018/08/27
5440
CSS进阶02-盒模型进阶
CSS3盒模型:border-box
box-sizing可以声明计算元素高宽的 CSS 盒模型。它有content-box、border-box和inherit三种取值。其中border-box是 css3 新增,也是主流 UI 框架的全局默认属性。
心谭博客
2020/04/20
3.5K0
为什么大家偏爱怪异盒模型border-box?
我们都知道有两种盒模型,w3c盒模型和IE盒模型,IE是业界毒瘤所以IE盒模型又叫怪异盒模型(好吧我瞎说的)。content-box,顾名思义,即width就是内容宽度,和边框边距相互独立,反过来 border-box 就是宽度包含了padding和border,相互影响。
茶无味的一天
2022/10/06
3110
为什么大家偏爱怪异盒模型border-box?
CSS布局(一) 盒子模型基础
一、盒子模型 标准盒子模型  从下图可以看到标准 w3c 盒子模型的范围包括 content、padding、border、margin,并且 content 部分不包含其他部分。 怪异盒子模型 从下
柴小智
2018/04/10
1.1K0
CSS布局(一) 盒子模型基础
CSS篇-面试题1-画一下盒子模型
组件是一种对html 元素数据的封装,对原生 html标签元素的一种拓展,但底层核心依旧依赖DIV+CSS
itclanCoder
2020/10/28
1.1K0
box-sizing——移动Web开发者不得不知的属性
box1为content-box,width/height代表内容的宽高,当有padding、border的时候,内容不会压缩,盒子看起来是向外扩张了,占位变化了,盒模型宽/高 = width/height + padding + border
砖业洋__
2023/05/06
1880
box-sizing——移动Web开发者不得不知的属性
前端入门教程:CSS标准盒模型和怪异盒模型区别
理解盒模型:CSS3 中的盒模型有以下两种:标准盒模型、IE盒子模型(怪异盒模型),盒模型是由4个部分组成,由内向外分别是content(下图蓝色部分)、padding、border、margin盒模型有5个属性:
艾编程
2022/12/13
7030
前端入门教程:CSS标准盒模型和怪异盒模型区别
从box-sizing:border-box属性入手,来了解盒模型
从最开始学习CSS的时候,就了解了盒模型的概念,今天,我们从其中的box-sizing:border-box;的属性入手,来重新认识一下盒模型在实际项目中的运用。
全栈程序员站长
2022/08/11
3.6K0
从box-sizing:border-box属性入手,来了解盒模型
CSS魔法堂:盒子模型简介
本文讨论的是块级盒子(Block-level box)的盒子模型(Box Model) 一、W3C标准的盒子模型                              二、IE盒子模型      
^_^肥仔John
2018/01/18
5340
CSS魔法堂:盒子模型简介
IE 盒模型和W3C盒模型
width就是concent的宽度,不包括padding margin border的长度
bamboo
2019/01/29
9390
IE 盒模型和W3C盒模型
CSS盒子模型
所有的HTML元素都可以看作是一个盒子 将盒子模型拆分,则包括 外边距+边框+填充+内容 显得专业一些,box model = margin+border+padding+content
WindRunnerMax
2020/08/27
7900
详解47:box-sizing
1.CSS3中新增了一个box-sizing属性, 这个属性可以保证我们给盒子新增padding和border之后,记住,边框不算在内哈,记住,保持不变的是content哈, 盒子元素的宽度和高度不变 2.box-sizing属性是如何保证增加padding和border之后, 盒子元素的宽度和高度不变 和我们前面学习的原理一样, 增加padding和border之后要想保证盒子元素的宽高不变, 那么就必须减去一部分内容的宽度和高度
贵哥的编程之路
2020/10/28
3880
相关推荐
盒模型和box-sizing
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验