问题分析
祖先元素使用了 “transform”
- 元素的位置和尺寸是相对于它的BFC(块级格式上下文)计算的;
- 而transform会使元素创建一个新的BFC,其所有的子孙元素都会包含在这个新的BFC中;
- 则若元素的祖先元素使用了transform,position: fixed定位就会失效。
解决办法
vue3
将需要绝对定位的元素直接挂载在body下,使用vue3新特性teleport
<div style="transform: translateX(-50%)">
<teleport to="body">
<div style="position: fixed">...</div>
</teleport>
</div>