issues: 父级元素包含transform导致fixed定位失效

本文探讨了transform元素如何影响元素渲染,包括导致overflow区域的变化、创建独立的层叠上下文以及对absolute/fixed定位的影响。重点讲解了transform元素如何通过创建containing block影响其他定位属性,以及其在fixed定位失效中的作用。
transform 对其他元素渲染的副作用有
  • transform 的元素会影响overflow area (溢出区域)。也就是说,使用transform使得元素移出了父元素之外的话,在父元素上使用overflow: scroll和overflow:auto的情况下,父元素将会展示出滚动条。
  • transform 的元素会创造一个stack context (层叠上下文),造成内部和外部的z-index相互独立。
  • transform 的元素将会创建一个 containing block (包含块),所有的position为absolute和fixed的子元素、以及设置了background-attachment的背景将会相对于该元素的 padding box 布局

第三条即造成fixed失效的原因;是由于transform元素创建了一个Containing Block —— 它是元素渲染的一个基本概念,会影响元素的布局。

原因:position为absolutefixed,包含块可能有满足以下条件的最近父级元素的内边距的边缘组成:

  1. transform或perspective不为none;
  2. filter不为none;
  3. will-change为transform或perspective;
  4. contain为paint;

demo地址


Containing Block

参考一下关于containing block的确定,可以看到定位属性为fixed或者absolute的元素都会受到transform包含块影响。

在这里插入图片描述

参考文献

transform的副作用——从失效的fixed说起
contain

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neil-

你们的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值