使用GSAP实现菜单锚点滚动跳转仅支持向下滚动,向上跳转异常如何解决?
基于GSAP的平滑滚动向上跳转异常问题
实现说明:开发了搭载GSAP滚动动画的页面,导航菜单采用「点击滚动到指定ID」的实现方案,拦截原生锚点跳转逻辑,全部滚动动作交由GSAP执行动画。
当前功能异常表现:
- 所有向下方向的滚动跳转完全符合预期
- 向上方向的滚动存在两类异常:
- 页面滚动到靠下位置后,点击导航菜单选中当前可视区域上方的目标元素,无法触发向上滚动动作
- 如果点击选择比当前页面位置高两级的目标元素,页面仅会向上滚动一级的距离
相关示例代码
HTML 页面结构
<nav> <ul> <li><a href="#section1">Section 1</a></li> <li><a href="#section2">Section 2</a></li> </ul> </nav> <section id="section1" class="panel"> </section>
JS 滚动逻辑实现
gsap.utils.toArray("nav a").forEach(function(a) { a.addEventListener("click", function(e) { e.preventDefault(); gsap.to(window, {duration: 1, scrollTo: e.target.getAttribute("href")}); }); });
内容的提问来源于stack exchange,提问作者markwalker_
相关产品推荐
相关产品推荐

