如何在浏览器中记住页面滚动的位置
场景:在滚动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内核