相对定位的父元素;设置overflow:aotu;之后;相对定位的子元素会随着父元素滚动
- 当我们将红色div的buttom属性设置为-100的时候;也就是将红色div在父元素外定位
- 我们把多余的div去掉,只保留红色div和定位父元素
- 页面上并没有显示红色div,但是父元素依然存在滚动条
- 当我们向下滚动滚动条的时候,红色div在定位父元素的最底部,也就是说定位父元素的滚动条是由红色div显示出来了,
- **那么我们可以假象,当父元素设置了`overflow:auto`,的时候,自己就变成了一个巨大的容器,显示区域依然是我们设置的宽高,对于相对定位的子元素来说,坐标系的0点位置依然是定位父元素的左下角,但是当我们滚动滚动条的时候,坐标系会随着滚动条的滚动而发生改变,所以当我们滚动滚动条的时候,即使子元素设置了相对定位,位置也会依然发生改变**
<style>
.box1 {
width: 100px;
height: 100px;
overflow: auto;
position: relative;
margin: 100px auto;
border: solid 1px blue;
}
.box4 {
width: 100%;
position: absolute;
bottom: 0px;
background-color: red;
}
</style>
</head>
<body>
<div class="box1">
<div class="box2">
<div class="box3">
这是一串超出父元素的文本
</div>
<div class="box4">
balabala
</div>
</div>
</div>
</body>

这是页面初始化效果

我们给红色div设置的坐标设置:button:0;那么,红色div应该始终在父元素的底部(box2并没有设置position属性;所以是相对于box1来进行定位的);当我们滚动滚动条的时候;红色div也就是设置了相对定位的div会随着父元素的滚动而进行滚动;为什么会这样呢?
<style>
.box1 {
width: 100px;
height: 100px;
overflow: auto;
position: relative;
margin: 100px auto;
border: solid 1px blue;
}
.box4 {
width: 100%;
position: absolute;
bottom: -100px; /*当我们将红色div的buttom属性设置为-100的时候;也就是将红色div在父元素外定位*/
background-color: red;
}
</style>
</head>
<body>
<div class="box1">
<div class="box2">
<div class="box3">
这是一串超出父元素的文本这是一串超出父元素的文本这是一串超出父
元素的文本这是一串超出父元素的文本这是一串超出父元素的文本这是一串
超出父元素的文本这是一串超出父元素的文本这是一串超出父元素的文本
</div>
<div class="box4">
balabala
</div>
</div>
</div>
</body>
当我们将红色div的buttom属性设置为-100的时候;也就是将红色div在父元素外定位

红色div在定位父元素的下面,并且没有在页面上显示,

当我们滚动滚动条的时候,红色div显示在页面上,并且和刚刚的效果一样,是随着父元素的滚动而滚动的; 那么外层父元素的滚动条和里面的文字信息撑起来的高度有没有关系呢?
<style>
.box1 {
width: 100px;
height: 100px;
overflow: auto;
position: relative;
margin: 100px auto;
border: solid 1px blue;
}
.box4 {
width: 100%;
position: absolute;
bottom: -100px;
background-color: red;
}
</style>
</head>
<body>
<div class="box1">
<div class="box4">
balabala
</div>
</div>
</body>
我们把多余的div去掉,只保留红色div和定位父元素

页面上并没有显示红色div,但是父元素依然存在滚动条

当我们向下滚动滚动条的时候,红色div在定位父元素的最底部,也就是说定位父元素的滚动条是由红色div显示出来了,
我们都知道overflow:auto,属性是设置元素溢出时为元素添加滚动条,当我们为定位父元素设置overflow:auto,的时候,定位子元素的定位即使超出了定位父元素的显示位置,父元素也会为自己添加滚动条,容纳子元素
那么我们可以假象,当父元素设置了overflow:auto,的时候,自己就变成了一个巨大的容器,显示区域依然是我们设置的宽高,对于相对定位的子元素来说,坐标系的0点位置依然是定位父元素的左下角,但是当我们滚动滚动条的时候,坐标系会随着滚动条的滚动而发生改变,所以当我们滚动滚动条的时候,即使子元素设置了相对定位,位置也会依然发生改变


当CSS中设置`overflow:auto`时,子元素的相对定位会随滚动条变化。即使子元素定位超出父元素,父元素仍会出现滚动条。滚动时,子元素的位置会根据坐标系的变化而改变,保持相对定位的状态。

1223

被折叠的 条评论
为什么被折叠?



