yy211zhu 2016-07-25 11:00 采纳率: 100%
浏览 3035
已采纳

jquery根据滚动距离执行css动画函数,往下滚动只执行一次动画,往上滚动不执行动画怎么回事

代码

   $(document).scroll(function(){
                //获取滚动条滚动的距离
                var scrollH=$(document).scrollTop();
                if(scrollH < 10){
                    $(".mydiv").addClass("animatediv");
                }else if( 10 < scrollH < 20){
                    $(".mydiv").removeClass("animatediv").addClass("noaniamte");

                }else{
                    $(".mydiv").addClass("animatediv");
                }
            })

css代码:
.mydiv{
width: 300px;
height: 200px;
background: #000;
text-align: center;
opacity: 0.2;

    }
    .animatediv{
        margin-left: 500px;
        transition: all 2s;
        -webkit-transition:all 2s ease;
    }
    .noaniamte{
        margin-left: 0;
        transition: all 2s;
        -webkit-transition:all 2s ease;
    }

HTML

     <div style="width:1000px; height: 2000px;">
        <div class="mydiv"></div>
        <div class="mydiv"></div>
        <div class="mydiv"></div>
        <div class="mydiv"></div>
        <div class="mydiv"></div>
    </div>

这难道是浏览器滚动机制的原因吗?有遇到过这样的问题吗?

  • 写回答

2条回答 默认 最新

  • 樊小书生 2016-07-25 11:38
    关注

    这个是因为往上滚动的时候这个属性noaniamte一直没有去掉,每次判断结束不论什么情况都先把noaniamte这个属性去掉就没问题了,我稍微修改了一下
    if(scrollH < 200){
    $(".mydiv").removeClass("noaniamte").addClass("animatediv");
    }else if( 200 < scrollH < 400){
    $(".mydiv").removeClass("animatediv").addClass("noaniamte");

                            }else{
                                    $(".mydiv").removeClass("noaniamte").addClass("animatediv");
                            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码