跨页面加载记忆滚动位置

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您的旅程的每个阶段提供云产品。 立即开始使用 价值 200 美元的免费积分!

Hakim El Hattab 在推特上发布了一条关于静态网站的非常棒的小型 UX 增强功能,该网站包含可滚动的导航侧边栏。

诀窍是在页面退出之前将滚动位置放入 localStorage 中,并在加载时获取该值并滚动到该位置。 我将从推文中重新键入它...

let sidebar = document.querySelector(".sidebar");

let top = localStorage.getItem("sidebar-scroll");
if (top !== null) {
  sidebar.scrollTop = parseInt(top, 10);
}

window.addEventListener("beforeunload", () => {
  localStorage.setItem("sidebar-scroll", sidebar.scrollTop);
});

令人惊讶的是,您不会看到滚动位置错误的闪现。 我想知道为什么? 也许这与浏览器现在正在进行的精美绘制保持功能有关? 不确定。