You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

隐藏内容后页面跳转,如何阻止该异常滚动行为?

解决网格折叠/展开时页面自动跳转的问题

问题原因

当网格从展开状态切换为折叠状态时,页面总高度大幅降低,浏览器的**滚动锚定(Scroll Anchoring)**机制会自动调整滚动位置,试图让当前视口中的元素保持可见,这就导致了页面跳转到底部的现象。


方案一:禁用滚动锚定

通过CSS属性直接阻止浏览器的滚动锚定行为,无需修改JavaScript代码,操作最简单。

修改网格容器的CSS:

#grid {
  background: black;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  overflow-anchor: none; /* 添加该行禁用滚动锚定 */
}

如果需要全局禁用该行为,也可以给body添加属性:

body {
  padding: 72px;
  overflow-anchor: none;
}

方案二:手动保存并恢复滚动位置

在修改网格状态前后,手动记录并恢复页面的滚动位置,适合需要精细控制滚动行为的场景。

修改JavaScript代码:

const toggleButton = document.getElementById("toggle-button")
const grid = document.getElementById("grid")
let isCollapsed = false

toggleButton.addEventListener("click", () => {
  // 保存当前滚动位置
  const currentScrollPos = window.pageYOffset || document.documentElement.scrollTop;
  
  isCollapsed = !isCollapsed
  isCollapsed ? grid.classList.add("collapsed") : grid.classList.remove("collapsed")
  
  // 恢复之前的滚动位置
  window.scrollTo(0, currentScrollPos);
})

内容的提问来源于stack exchange,提问作者base

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 10:52:40