如何在浏览器中记住页面滚动的位置

如何在浏览器中记住页面滚动的位置

场景:在滚动A页面的时候,然后再去B页面,这时返回A页面,会发现A页面的位置滚动了和B页面一样高的距离,不能记住历史位置。
在这里插入图片描述

原因:在滚动时滚动的是整个body页面,而不是单独的A或B页面。
如何检查滚动的是否那个元素?
将如下代码粘贴到控制台,然后滚动页面,打印结果即滚动的元素。

function findscroller(element) {
	element.onscroll = function() {
		console.log(element);
    };
	Array.from(element.children).forEach(findscroller);
}
findscroller(document.body);

我这里是body在滚动
在这里插入图片描述
解决办法
让每一个滚动的列表产生自己的滚动容器,就不会互相影响了,即给每一个滚动的列表区域设置自己的固定高度和溢出滚动:

height: 80vh; // 大小自己定
over-flow-y: auto;

注意:vh为视口单位。
css3中新增一种视口单位vw和vh,根据浏览器的窗口大小而定的单位,不受父元素影响。
1vw = 可视窗口宽度的1%,窗口宽度为350,则1vw =3.5px
1vh = 可视窗口高度的1%,窗口宽度为750,则1vw =7.5px

再次测试和验证:已改为当前独立的滚动容器,这样彼此就互不影响了。
在这里插入图片描述

兼容性:
PC:IE9+
Android:4.4+
iOS:8+
微信x5内核

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值