jquery 滚动条 scroll 和 animate出现的问题总结

原文链接

出现问题:

1、每次scroll都使动画反复触发,解决这个问题使用动画的 stop(),

这个方法主要是为了停止所有指定元素上运行的动画 

两个参数,第一个参数删除队列动画,第二参数是让当前正在执行的动画立即完成,并且重设show和hide的原始延时,调用回调函数,示例:

 $("#div").stop(); 停止当前动画,继续下一个动画

$("#div").stop(true) 停止元素的所有的动画

$("#div").stop(false, true) 让当前动画直接到达末状态,继续下一个动画

$("#div").stop(true, true) 清楚所有动画,让当前动画直接到达末尾状态

 到这一步能基本解决问题了,但是观察效果的时候发现进入动画的时候还是 有点卡顿的问题。主要原因在下面。  

2、第二个问题也是因为scroll每次触发会引起上百次的操作,为了优化操作,网友提示 使用节流阀,不然scroll每次都在触发。节约资源,其中提供了  https://segmentfault.com/a/1190000002764479 函数防抖与节流的优秀文章。 

$(function(){
     
    var fs = true;
        
    $(window).scroll(function(event) {

        if( $(window).scrollTop() > 50 ){
            
            if(fs){
                
                $(".result").stop().animate({
                    top: 0
                },300);

                fs = false;
            }
        }
        else{

         if(!fs){

            $(".result").stop().animate({
                top: "-50px"
            },300);

            fs = true;
          }
        }
    });
 });

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 jQuery 的 `mousewheel` 插件来实现鼠标滚轮控制横向滚动条的滚动。 首先,需要在页面中引入 `jquery.mousewheel.js` 文件: ```html <script src="/path/to/jquery.mousewheel.js"></script> ``` 然后,可以通过以下方式来使用 `mousewheel` 插件: ```javascript $(selector).mousewheel(function(event, delta, deltaX, deltaY) { // 处理滚轮事件 }); ``` 其中,`selector` 是要绑定滚轮事件的元素的选择器,`deltaX` 变量表示横向滚动的距离,当鼠标滚轮向左滚动时,`deltaX` 为负数;当鼠标滚轮向右滚动时,`deltaX` 为正数。 例如,下面的代码可以使用鼠标滚轮向左或向右滚动一个横向滚动条: ```javascript $('#scrollbar').mousewheel(function(event, delta, deltaX, deltaY) { // 将滚动条向左或向右滚动一段距离 $('#scrollbar').scrollLeft($('#scrollbar').scrollLeft() - deltaX); }); ``` 希望这能帮到你! ### 回答2: 要实现在jquery中使用鼠标滚轮滚动横向滚动条,首先需要引入jquery库文件。接下来,通过jquery选择器选中需要添加横向滚动条的元素。然后,使用jqueryscrollLeft()方法获取当前元素的水平滚动位置。 接着,使用jquery的on()方法监听鼠标滚轮事件。在事件处理程序中,调用event对象的preventDefault()方法阻止默认的滚轮行为,然后判断滚轮滚动的方向。如果向上滚动,则将scrollLeft属性减去一个固定值,使元素向左滚动;如果向下滚动,则将scrollLeft属性加上一个固定值,使元素向右滚动。 最后,使用jqueryanimate()方法实现平滑的滚动效果。在滚动处理程序中,使用animate()方法将scrollLeft属性过渡到新的值,并设置过渡时间和缓动效果。 示例代码如下: ```javascript // 引入jquery库文件 // 选中需要添加横向滚动条的元素 var element = $('.scrollable-element'); // 获取当前水平滚动位置 var scrollPosition = element.scrollLeft(); // 监听鼠标滚轮事件 element.on('mousewheel DOMMouseScroll', function(event) { // 阻止默认的滚轮行为 event.preventDefault(); // 判断滚轮滚动方向 var delta = event.originalEvent.wheelDelta || -event.originalEvent.detail; if (delta > 0) { // 向上滚动 scrollPosition -= 50; // 固定值,调整滚动速度 } else { // 向下滚动 scrollPosition += 50; // 固定值,调整滚动速度 } // 平滑滚动效果 element.stop().animate({ scrollLeft: scrollPosition }, 500); // 过渡时间和缓动效果,可根据需要调整 }); ``` 以上就是使用jquery实现横向滚动条使用鼠标滚轮滚动的方法。根据实际需求,可以调整滚动速度和过渡效果。 ### 回答3: jQuery可以使用插件来实现横向滚动条使用鼠标滚轮滚动的功能。常用的插件有mCustomScrollbar和perfect-scrollbar等。 使用mCustomScrollbar插件,首先需要引入jQuery和mCustomScrollbar的相关文件。然后,在需要加入横向滚动条的元素上添加一个class,比如"scrollbar"。接着,使用以下代码来初始化滚动条: $(".scrollbar").mCustomScrollbar({ horizontalScroll: true, // 启用横向滚动 axis: "x", // 指定滚动轴为水平方向 mouseWheel: { // 鼠标滚轮参数设置 enable: true, // 启用鼠标滚轮滚动 axis: "x" // 指定滚动轴为水平方向 } }); 这样,当鼠标滚轮滚动时,横向滚动条就会相应地进行滑动。 对于perfect-scrollbar插件,使用方法类似。首先引入jQuery和perfect-scrollbar的相关文件,然后在需要加入横向滚动条的元素上添加一个class,比如"scrollbar"。接着,使用以下代码来初始化滚动条: $(".scrollbar").perfectScrollbar({ wheelSpeed: 0.5, // 设置滚动速度,数值越大滚动速度越快 wheelPropagation: true, // 是否允许滚动条滚动时冒泡到父元素 horizontal: true // 启用横向滚动 }); 这样,鼠标滚轮滚动时,横向滚动条就会相应地进行滑动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值