条件
父元素position: relative; 不设置height,或者设置height为auto;
子元素position: absolute;元素位置的变动,导致的overflow 滚动条出现变动。
demo代码
<!DOCTYPE html>
<html lang="zh_CN">
<head>
<title>Document</title>
<style>
.content{
width: 300px;
height: auto;
overflow:auto;
position:relative;
border:1px solid #aaa;
}
.inner{
width: 100px;
height: 50px;
background-color: #aaa;
position:absolute;
top: 0;
left: 0px;
animation: move 5s linear infinite alternate;
}
@keyframes move {
to{
left: 300px;
}
}
</style>
</head>
<body>
<div class="content">
111111
<div class="inner"></div>
</div>
<div style="height:30px;width: 300px;background-color: blanchedalmond;">1231</div>
</body>
</html>
现象
chrome内核版本65(低版本)
出现滚动条时,不会触发浏览器重排,导致滚动条遮挡下方元素。
调整浏览器窗口大小,致浏览器重排后,滚动条消失后效果如下
、
如果父元素设置了高度,则滚动条会出现在盒子里面。
chrome新版
滚动条出现和消失时会自动重排