求助:为何position: absolute元素仅固定在第一个section区块?
解决absolute定位元素错位问题
问题出在position: absolute的定位规则上:absolute元素会相对于最近的非static定位父元素来定位,如果没有符合条件的父元素,就会相对于页面根元素(html/body)。
你的第二个区块(.secondBlock)默认是position: static(元素默认定位方式),所以里面的.sticky会相对于根元素定位。第二个区块在页面滚动后的位置,但根元素的bottom: 2em对应的是视口底部,而第一个区块刚好占满视口高度,所以提示文本就出现在第一个区块的底部了。
解决方案
给区块容器添加position: relative,让它成为内部absolute元素的定位上下文:
.block { height: 100vh; width: 100vw; /* 添加这行,所有区块都能作为内部absolute元素的定位基准 */ position: relative; } .secondBlock { background-color: #010c2d; } .sticky { position: absolute; left: 3em; bottom: 2em; font-size: 2.5vh; color: #ddd; } .left-wrapper { display: inline; float: left; padding-top: 2em; padding-left: 4em; padding-bottom: 0; width: 55vw; }
这样修改后,.sticky会相对于所在的<section>区块定位,自然就会显示在第二个区块的底部。如果只想针对第二个区块设置,也可以单独给.secondBlock添加position: relative,不过给所有.block统一设置更便于后续其他区块复用相同的定位逻辑。
内容的提问来源于stack exchange,提问作者okokokokokokokok
相关产品推荐
相关产品推荐

