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

如何启用/禁用鼠标移动触发的元素视差效果?(jQuery v1.11.0)

解决方案:解绑视差事件并复位元素

针对你遇到的问题,这里提供两个适配jQuery v1.11.0的简单修正方案:

方案一:改进unbind方法(推荐)

你之前的unbind操作已经能停止mousemove事件触发,只需在解绑后添加TweenMax动画,把元素复位到初始位置即可:

$('.button2').click(function(){
    // 解绑section上的mousemove事件
    $('section').unbind('mousemove');
    // 用TweenMax将.d和.bg平滑复位到初始位置(假设初始位移为0)
    TweenMax.to('.d, .bg', 0.3, {
        x: 0,
        y: 0,
        ease: Power2.easeOut // 可选,让复位动画更自然
    });
});

说明:如果你的元素初始位置不是translate(0,0),只需把x和y的值改成对应初始状态的位移数值即可。

方案二:修正off方法的使用

你之前的off方法逻辑错误——应该直接解绑section上的mousemove事件,而非在mousemove回调里操作子元素。首先要确保绑定事件时使用命名函数,这样才能精准解绑:

绑定事件的代码(第一个按钮):

// 把视差逻辑封装成命名函数
function parallaxMoveHandler(e) {
    parallaxIt(e, '.d', 0.3);
    parallaxIt(e, '.bg', 0.1);
}

$('.button1').click(function(){
    setTimeout(function(){
        // 用命名函数绑定mousemove事件
        $('section').bind('mousemove', parallaxMoveHandler);
    }, 2500);
});

解绑并复位的代码(第二个按钮):

$('.button2').click(function(){
    // 解绑指定的事件处理函数
    $('section').off('mousemove', parallaxMoveHandler);
    // 同样添加复位动画
    TweenMax.to('.d, .bg', 0.3, {x: 0, y: 0});
});

为什么之前的off方法无效?
你之前的代码是在section的mousemove回调里,尝试解绑.d和.bg的mousemove事件,但这两个元素根本没有绑定过mousemove事件,自然起不到停止视差的作用。正确的做法是解绑section上绑定的视差处理函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:37:16