包含块
影响
元素的尺寸和位置会受包含块的影响。如元素的某些属性设置百分比值时就是通过元素的包含块计算得来的。
包含块计算百分值
height, top, bottom
中的百分比值是通过包含块的height
的值计算得的。如果包含块的height
是根据它内容变化,而且包含块的position
属性值为static, relative
,这些值的计算值为auto
;width, left, right, padding, margin
,中的百分比值是通过包含块的width
的值计算的。
确定包含块
确定包含块完全依赖position
属性的值:
position
属性值为static, relative, sticky
元素的包含块可能由它最近的祖先块级元素(如inline-block, block, list-item
元素)的内容区域(盒子模型的content-box)边缘组成。position
属性值为absolute
元素的包含块由它最近的position
值不是static
(也就是值为relative, absolute, fixed, sticky
)的祖先元素的内边距边缘组成。position
属性值为fixed
元素在连续媒体下包含块是viewport(也就是window)
(根元素html的包含块也是viewport),在分页媒体下包含块是分布区域。如果
position
的值为absolute, fixed
,包含块也可能满足以下条件的最近父级元素的内边距边缘组成:
- transform, perspective的值不为none
- will-change的值是transform, perspective
- filter的值不是none或will-change的值是filter(firefox下生效)
- contain的值是paint
- backdrop-filter的值不是none