在前端开发中,absolute的containing block(容器块)计算方式与正常流的区别主要体现在定位参考和计算方式上。以下是具体的分析:
-
定位参考:
- 在正常流中,元素的containing block通常是其最近的块级元素的content box。这意味着元素的尺寸和位置是根据这个块级元素的内容区域(即去掉padding、border和margin的部分)来计算的。
- 对于position为absolute的元素,其containing block的计算方式则不同。它会首先向上查找最近的position不为static的祖先元素,然后根据这个祖先元素的display属性来确定具体的containing block。如果祖先元素是块级元素,则absolute元素的containing block为该块级元素的padding box;如果是行内元素,则为包含该行内元素内所有行内元素的padding box。如果找不到这样的祖先元素,那么absolute元素的containing block会被设置为initial containing block,即原点与canvas重合、大小和viewport相同的矩形。
-
计算方式:
- 在正常流中,元素的尺寸和位置是相对于其containing block的content box来计算的。这意味着元素会占据其包含块内容区域的一部分,并且其位置会受到包含块内其他元素的影响。
- 对于absolute元素,其尺寸和位置是相对于其特定的containing block来计算的,这个特定的containing block可能是块级元素的padding box或者行内元素的包含所有行内元素的padding box等。由于absolute元素脱离了正常流,因此其位置不会受到其他元素的影响,而是直接相对于其containing block进行定位。
综上所述,absolute的containing block计算方式与正常流的主要区别在于定位参考和计算方式的不同。这些差异使得开发者能够更灵活地控制元素的定位和布局,从而实现复杂的页面效果。
标签:box,containing,流有,元素,计算,block,absolute From: https://www.cnblogs.com/ai888/p/18676194