Fixed 定位脱离 Viewport 的 bug

Fixed 定位脱离 Viewport 的 bug

<style>
.outer {
overflow: hidden;
width: 300px;
height: 300px;
background: yellow;
}
.mid {
margin: 20px;
width: 200px;
height: 200px;
transform: translate(0, 0);
background: greenyellow;
}
.inner {
position: fixed;
top: 0;
left: 0;
width: 100px;
height: 100px;
background: pink;
z-index: 1
}
</style>
</head>
<body>
<div class="outer">
<div class="mid">
<div class="inner"></div>
</div>
</div>
</body>
</html>

对于声明 transfrom 值非 none 元素,其子元素中若存在 position: fixed 将以声明 transform 的最近祖先作为基准而定位,这是因为 transfrom 值非 none 的元素定义了一个局部坐标系统,导致 postion: fixed 以此坐标系统计算布局。