简单介绍css中的包含块(containing block)

首先,我们查看英文文档中的包含块:https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block

对于英语不太好的人来说需要一句话一句话读,然后把这篇文章的架构清晰的体现出来。

我是用filemaker进行自动分段分句,实现上述过程,下图为filemaker分句演示。

我简要说说这篇文章的架构:

1.包含块一般是什么:上一层父元素

(有一段用来介绍box,因为之后要用到content和padding的概念)

2.包含块的功能:percentage值对应的尺寸需要靠包含块的尺寸决定。

3.包含块的四种情况(主要内容,也是最难理解的部分,是这篇文章要讲的内容)

 

static

relative

sticky

上层元素的content值 更上层元素的content值
absolute 更上层元素的padding值 上层元素的padding值 更上层元素的padding值
fixed

列表示该元素位置属性

行表示上层元素的特点

两个都不符合 特殊条件 position的属性是非static 上层元素不是块级元素

 

我用图标来表示那4中情况,可以发现基本上是两种:上层元素或者更上层元素。有些用padding边界进行计算,有些用content边界进行计算。

其中特殊条件是:1.transform值不是none,或者perspective值不是none。或contain值不为none(仅用于firefox)。或will-change值是filter(仅用于firefox)、transform或者perspective。3.contain值为paint。

另外,其中的最后一行的分类的前三种,实际上是四种,为了方便弄成3种。用下面的图进行解释

 

4.如何计算相对值:

包含块高决定:height,top, bottom

包含块宽决定:width, left, right, padding, margin

5.例子:

例子1:元素位置属性是static,上层元素是块级元素,所以包含块是上层元素,以content计算

例子2:上层元素不是块级元素,所以包含块是更上层的块级元素(body)

例子3:元素位置属性是absolute, 上层元素是absolute(非static),所以包含块是上层元素,以padding边界计算

例子4:元素位置属性是fixed,上层元素是static,且不满足几种要求,所以包含块是窗口

例子5:元素位置属性是absolute,上层元素是static,但满足几种要求中的一种,所以包含块是上层元素,以padding边界计算

 

posted @ 2020-03-21 20:19  matthew's_follower  阅读(441)  评论(0编辑  收藏  举报