CSS 从零开始(三)盒模型

2019-04-19 11:07:19 +08:00
 powertoolsteam

CSS2.1 中提出了盒模型的概念,盒模型总结概括了所有元素的基本特征,那么盒模型究竟是一个什么样的概念呢,我们可以用过下面的链接来访问其中图片

图片链接

从图片来看,一个完整的盒模型有上面四部分组成,即 border(边框)、margin(外边距)、padding(内边距)、element(元素)。简而言之,任何元素都具有上面四个特征。

在计算盒模型的高度宽度时候有两个计算标准分别是:标准盒模型、IE 盒模型

标准盒模型

该模型宽度和高度仅仅是其中 element(元素)的宽度与高度,不包括内外边距以及边框的宽度与高度。

上面这样图就是标准盒模型的计算方式,其中 width、height 指的是 element 的宽度和高度。

IE 盒模型

早起的 IE 浏览器( IE6.0 以前)使用的盒模型与其他浏览器有差异,我们称之为 IE 盒模型。

IE 盒模型与标准盒模型的不同在于,该模型的宽度与高度是将元素与内外边距、边框累加起来的总和才是整个模型占用的宽度和高度。

简而言之就是 width = element + padding + margin + border

CSS 中也支持手动设置模型类型, 即 box-sizing 属性,content-box 为标准盒模型,border-box 为 IE 盒模型

设置之后宽度高度遵循上方的规则。

/* 标准盒模型 */
box-sizing:content-box;

/*IE 盒模型*/
box-sizing:border-box;

外边距合并

当两个盒模型相遇时,其中垂直相遇的部分的外边距( margin )将会被合并,形成一个新的外边距, 新的外边距的高度等于两个发生合并的外边距的高度中的较大者。

下面的图可以做一个很好的说明。

图片链接

上图中两个盒模型,上面的有一个 20px 的 margin-bottom,下面的有一个 10px 的 margin-top,当两个模型垂直相遇时,相遇的部分会被合并,形成一个新的外边距,高度为 20px。

这里可以看到两个 element 之间的 margin 是 20px,而不是想象中的 30px。

当一个元素包含在另一个元素中时,它们的上和 /或下外边距也会发生合并。如下图所示

图片链接

1037 次点击
所在节点    推广
4 条回复
powertoolsteam
2019-04-19 11:19:31 +08:00
本文由葡萄城发布,转载请注明出处:葡萄城官网( https://www.grapecity.com.cn/developer ),葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
Blacate
2019-04-19 11:30:29 +08:00
IE 盒模型 width = element + padding + border 不包括 margin 吧
错误这么明显还写教程。。可怕。。
powertoolsteam
2019-04-19 11:37:55 +08:00
@Blacate 感谢提醒,已更正,IE 盒模型很久不用,有些概念生疏了
powertoolsteam
2019-04-19 11:39:38 +08:00
更正一下,IE 盒模型的宽度与高度的计算不包括外边距,但包括内边距和边框,再次感谢 Blacate 同学的指正

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/556708

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX