-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
面试官:说说你对盒子模型的理解? #93
Comments
最后的示例是不是写错了?设置为content-box,才是200px吧? |
考点:
核心点:
|
|
因为box-sizing设置为了border-box,因此width包括了padding,padding失效,因此盒子占据宽度仅为200px。 |
总结一下主要还是依据上面给出的思路来总结,从 是什么、有哪些类型、在浏览器中最终显示的大小 三个方面来总结。 盒子模型是什么?当浏览器对一个文档进行布局时,浏览器会依据盒模型原则来对每一个元素进行渲染,将每一个元素渲染成为一个矩形盒子。
标准盒模型和IE盒模型盒模型有2类,第一类是标准盒模型,是目前浏览器默认使用的盒模型,第二类是IE盒模型。
这2类模型是可以使用一个css属性来切换的,那就是box-sizing。
浏览器渲染后盒模型最终大小是多少?浏览器最终显示盒子的大小 = content + padding + border,这个公式是固定的,不管什么类型的盒子,计算宽高时都必须是这三个东西的结果。 我们自己定义的width属性的含义,在不同情况下是不同的:
题外话:margin 虽然是盒子模型的组成部分,但是和盒子的大小没有关系,margin 决定的事盒子占据的位置。 测试小白一个,如果有不正确的地方,希望大佬能指点一二啦~ |
哈哈哈 |
那么为什么把这种盒模型叫做IE盒模型呢?这只是一个历史问题,因为在很早以前IE低版本的浏览器默认使用的都是IE盒模型,且不可切换,所有有了这个爱称。但后来IE8及其以上版本默认盒模型都使用了标准盒模型。 |
称 border-box 为“怪异盒子模型”这一点有待商榷,虽然 content-box 是 CSS 的默认值,但大部分开发者更喜欢使用 border-box,它让布局更直观、简化了宽高的计算。因为 border-box 关注的是盒子大小而不是内容尺寸的大小,padding 和 border 从中分配,而 content-box 关注的是内容部分的大小,如果修改了 padding 和 border,会改变盒子大小而影响布局。 |
一、是什么
当对一个文档进行布局(layout)的时候,浏览器的渲染引擎会根据标准之一的 CSS 基础框盒模型(CSS basic box model),将所有元素表示为一个个矩形的盒子(box)
一个盒子由四个部分组成:
content
、padding
、border
、margin
content
,即实际内容,显示文本和图像boreder
,即边框,围绕元素内容的内边距的一条或多条线,由粗细、样式、颜色三部分组成padding
,即内边距,清除内容周围的区域,内边距是透明的,取值不能为负,受盒子的background
属性影响margin
,即外边距,在元素外创建额外的空白,空白通常指不能放其他元素的区域上述是一个从二维的角度观察盒子,下面再看看看三维图:
下面来段代码:
当我们在浏览器查看元素时,却发现元素的大小变成了
240px
这是因为,在
CSS
中,盒子模型可以分成:默认情况下,盒子模型为
W3C
标准盒子模型二、标准盒子模型
标准盒子模型,是浏览器默认的盒子模型
下面看看标准盒子模型的模型图:
从上图可以看到:
盒子总宽度 = width + padding + border + margin;
盒子总高度 = height + padding + border + margin
也就是,
width/height
只是内容高度,不包含padding
和border
值所以上面问题中,设置
width
为200px,但由于存在padding
,但实际上盒子的宽度有240px三、IE 怪异盒子模型
同样看看IE 怪异盒子模型的模型图:
从上图可以看到:
盒子总宽度 = width + margin;
盒子总高度 = height + margin;
也就是,
width/height
包含了padding
和border
值Box-sizing
CSS 中的 box-sizing 属性定义了引擎应该如何计算一个元素的总宽度和总高度
语法:
回到上面的例子里,设置盒子为 border-box 模型
这时候,就可以发现盒子的所占据的宽度为200px
参考文献
The text was updated successfully, but these errors were encountered: