返回

贴心小秘诀:让滚动条记住你的阅读进度

前端

如何让页面滚动条自动滚回上次浏览位置?

在浩瀚的网络世界中,我们时常会遇到需要暂时离开正在浏览的页面,稍后回来继续阅读的情况。然而,当我们再次回到页面时,不得不从头开始滚动查找之前的阅读位置,这无疑令人心烦意乱。

本篇文章将分享两种简单易行的解决方案,让你的滚动条自动滚回上次浏览位置,宛如页面为你贴心设置了书签一般。

方法一:利用 JavaScript

JavaScript 是一种强大的编程语言,可以实现各种浏览器端的功能。我们可以利用 JavaScript 来实现滚动条自动回滚:

window.onbeforeunload = function() {
  localStorage.setItem("scrollPosition", window.scrollY);
};

window.onload = function() {
  if (localStorage.getItem("scrollPosition")) {
    window.scrollTo(0, localStorage.getItem("scrollPosition"));
  }
};

这段代码的作用原理如下:

  • window.onbeforeunload 事件会在浏览器页面即将关闭或离开时触发。
  • 在该事件中,我们利用 localStorage API 将当前窗口的滚动位置(window.scrollY)存储到本地存储中。
  • 当页面重新加载时,window.onload 事件触发。
  • 在该事件中,我们检查 localStorage 中是否有存储的滚动位置。如果有,则将页面滚动到该位置。

方法二:利用 CSS 和会话存储

除了 JavaScript 之外,我们还可以利用 CSS 和会话存储来实现滚动条自动回滚:

body {
  scroll-behavior: smooth;
}
window.addEventListener("load", function() {
  if (sessionStorage.getItem("scrollPosition")) {
    window.scrollTo(0, sessionStorage.getItem("scrollPosition"));
  }
});

window.addEventListener("beforeunload", function() {
  sessionStorage.setItem("scrollPosition", window.scrollY);
});

这段代码的作用原理如下:

  • scroll-behavior: smooth; CSS 规则使页面滚动更加平滑。
  • window.addEventListener 事件监听器在页面加载时和离开时触发。
  • 在页面加载时,我们检查会话存储(sessionStorage)中是否有存储的滚动位置。如果有,则将页面滚动到该位置。
  • 在页面离开时,我们利用 sessionStorage 将当前窗口的滚动位置存储到会话存储中。

选择适合你的方法

两种方法各有优缺点:

  • JavaScript 方法: 适用于所有浏览器,但需要修改页面代码。
  • CSS 和会话存储方法: 不需要修改页面代码,但仅适用于支持会话存储的浏览器。

选择适合你的方法,让你的网络浏览更加便捷高效。告别手动查找滚动位置的烦恼,让页面自动为你记住阅读进度吧!