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

使用Scrollify禁用向上滚动失败,求排查代码问题

解决Scrollify禁用页面向上滚动的问题

我来帮你排查下代码里的问题——你想要实现的是只允许向下滚动时启用Scrollify,向上滚动时禁用它对吧?你的思路方向是对的,但有几个细节没处理好,导致代码没正常运行,咱们一步步来修正:

首先,你忽略了最关键的一步:初始化Scrollify

Scrollify的方法(比如enable()/disable())只有在你先初始化它之后才能正常工作,所以第一步必须先配置Scrollify的基础参数:

// 先初始化Scrollify,替换成你页面里的区块选择器
$.scrollify({
  section: ".scroll-section", // 比如你页面里的每个滚动区块类名
  easing: "easeOutExpo",
  scrollSpeed: 1100,
  // 其他你需要的配置项
});

然后修正你的滚动事件代码

原代码里的问题主要有两个:

  1. 变量iScrollPos没有初始化,第一次滚动时会是undefined,导致判断逻辑出错
  2. 没有区分「滚动位置不变」和「向上滚动」的情况,可能导致误触发禁用逻辑

修正后的代码如下:

// 初始化滚动位置变量,避免第一次判断时的undefined问题
let iScrollPos = $(window).scrollTop();

$(window).scroll(function () {
  const iCurScrollPos = $(this).scrollTop();
  
  if (iCurScrollPos > iScrollPos) {
    // 向下滚动:如果Scrollify处于禁用状态,就启用它
    if ($.scrollify.isDisabled()) {
      $.scrollify.enable();
    }
    console.log('向下滚动,启用Scrollify');
  } else if (iCurScrollPos < iScrollPos) {
    // 向上滚动:禁用Scrollify
    $.scrollify.disable();
    // 可选:如果你想完全阻止页面向上滚动(而不只是禁用Scrollify),可以添加下面这行
    // $(this).scrollTop(iScrollPos);
    console.log('向上滚动,禁用Scrollify');
  }
  
  // 更新滚动位置,用于下一次判断
  iScrollPos = iCurScrollPos;
});

最后注意脚本引入顺序

必须保证脚本的加载顺序正确,否则jQuery或Scrollify会找不到:

<!-- 先引入jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- 再引入Scrollify的脚本(替换成你实际的文件路径或CDN) -->
<script src="path/to/jquery.scrollify.min.js"></script>
<!-- 最后放你的自定义脚本 -->
<script>
// 上面的初始化和滚动事件代码
</script>

这样调整后,应该就能实现你想要的「禁用向上滚动,只允许向下滚动时使用Scrollify」的效果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:06:45