博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BEX5下实现鼠标滚动滚动条
阅读量:7091 次
发布时间:2019-06-28

本文共 1868 字,大约阅读时间需要 6 分钟。

使用前提:

页面内容过多,默认的滚动条太难看,在不引入滚动条插件情况下让界面不使用滚动条,又能通过鼠标滚动

实现步骤:

1 在会出现滚动条的组件上设置隐藏滚动条

overflow:hidden;

 

2  在上述组件的bind-mouseenter(鼠标进入事件)增加滚动监听器

  var num = 0;    var i = true;    Model.prototype.buttonGroup1Mouseenter = function(event){        var me = this;                this.getElementByXid("buttonGroup1").addEventListener("mousewheel", function(e){                        if(i||(num++)%5===0){                    i = false;                if(e.wheelDelta>0){                    up(me); // 向上滚动                }else{                    down(me); //向下滚动                }                setTimeout(function(){                    i=true;                    num=0;                }, 300);                            }                                });    };

其中,当鼠标进行滚动时,每一下滚动都会触发滚动事件,这会造成代码的执行滞后于事件的触发,给人一种卡顿的感觉,并造成页面卡停,所以需要通过 i 变量来设置当一次事件代码执行完毕后才能执行下一次处理;但又想通过快速滚动鼠标让事件执行的快点,所以又加入了 num ,每滚动5次鼠标视为一次有效的触发,既可以通过鼠标滚动的快慢控制滚动的速度,也可以防止触发事件次数过多导致页面的卡顿。

3 实现滚动代码

// 向上滚动一次    var up = function(me){        var scroll = $(me.getElementByXid("buttonGroup1"))[0];                        if(scroll.scrollTop-39>0){                scroll.scrollTop -=39;            }else{                scroll.scrollTop = 0;             }                };        // 向下滚动一次    var down = function(me){        var scroll = $(me.getElementByXid("buttonGroup1"))[0];        var bottom = scroll.scrollHeight- scroll.offsetHeight;                if(bottom-scroll.scrollTop>39){            scroll.scrollTop +=39;        }else{            scroll.scrollTop = bottom;         }    };

 其中,me.getElementByXid("buttonGroup1")为1中设置了样式的组件对象,39为滚动一次移动的高度,我这里刚好跳过一个功能项,不至于只移动半个按钮

4 在绑定了事件监听器的组件的bind-mouseleave事件上移除监听器

Model.prototype.buttonGroup1Mouseleave = function(event){

  this.getElementByXid("buttonGroup1").removeEventListener("mousewheel",function(){});
};

 

转载于:https://www.cnblogs.com/WongHugh/p/7372226.html

你可能感兴趣的文章
js实现栈
查看>>
前端必备,50 个 Chrome Developer Tools 必备技巧
查看>>
客户故事:4家银行如何打造新一代移动金融中心
查看>>
NDK开发中这些基本知识你都懂吗
查看>>
自动化运维工具ansible的实践
查看>>
一个22万张NSFW图片的鉴黄数据集?我有个大胆的想法……
查看>>
do 一下来了一个 redux
查看>>
Vue教程09:双向绑定对象中属性原理
查看>>
如何实现VM框架中的数据绑定
查看>>
关于this
查看>>
[译] 系列教程:选择准备安装的 TensorFlow 类型
查看>>
Webhook到底是个啥?
查看>>
Flutter学习 ---- TravisCI加持
查看>>
借用UAC完成的提权思路分享
查看>>
【小程序踩坑系列1】 扫普通二维码调起小程序bug:码地址传递错误,传为历史地址...
查看>>
高阶自定义View --- 粒子变幻、隧道散列、组合文字
查看>>
Django REST framework API 指南(6):路由
查看>>
性能优化工具知识梳理(6) Memory Monitor & Heap Viewer & Allocation Tracker
查看>>
《Java8实战》-第八章笔记(重构、测试和调试)
查看>>
安卓调用PrinterShare实现无线打印功能
查看>>