BEX5下实现鼠标滚动滚动条

使用前提:

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

实现步骤:

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(){});
};

时间: 2024-08-28 15:31:09

BEX5下实现鼠标滚动滚动条的相关文章

Android Studio IDE 按下Ctrl + 鼠标滚动 缩放编辑文本的大小

Settings->Editor->General 勾选Change font size(Zoom)with Ctrl+Mouse Wheel!

制作由下向上的滚动字幕,字幕内容要求包含网站超级链接和图片超级链接, 使用鼠标移动事件控制字幕运动和停止。 2、在下拉列表框中设置五种以上颜色,选择颜色后, 滚动字幕背景色改变成相应颜色

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>    </head>    <!--        时间:2016-12-28        描述:1.制作由下向上的滚动字幕,字幕内容要求包含网站超级链接和图片超级链接,                   使用鼠标移动事件控制

理解鼠标滚动事件

javascript<script> window.onload = function(){ var count = 0; document.onmousewheel = function(e){ /*鼠标滚动的量 下滚是负 上滚是正*/ if(e.wheelDelta < 0){ count ++; }else{ count --; } console.log(count); } }</script>``` #### 第二步 了解 fullpage jquery插件 >

对于鼠标滚动事件的扩充

本篇如题,是对上一个鼠标滚动事件的扩充 具体扩充内容: 1.可以添加点击元素(control_up/control_down)来控制页面的滚动 2.可以选择触发方式(点击.滚轮滚动.点击和滚轮滚动) //使用鼠标滚轮每次滚动浏览器大小的距离//obj格式{touch: click||scroll||click&scroll, control_up: id, control_down: id}//touch:什么触发方式,三个选项click/scroll/click&scroll:contr

Duilib初级控件扩展一例: 具有鼠标滚动消息的OptionUI

当初之所以有这个想法, 是因为我想在Option上滚动鼠标的时候自动切换到前一个(或后一个)Option上面去. 所有的OptionUI在水平布局HorizontalLayout上面. 例子虽然能达到我要的前后的效果, 但是后来证明我错了, 试想想看, 为什么是让OptionUI来处理鼠标滚动消息, 让一个OptionUI处理鼠标滚动消息有啥意义? 明明该交给Option所在的水平布局来处理, 不是最好的选择吗? 的确是这样, 我当时就应该多想法再写的, 也可能是熟能生巧的原因吧, 以后注意了.

鼠标滚动事件

鼠标滚动事件 关于滚动事件这方面,其实是比较乱的. 滚轮事件的兼容性差异有些不拘一格,不是以往的IE8-派和其他派,而是FireFox派和其他派. 包括IE6在内的浏览器是使用onmousewheel,而FireFox浏览器一个人使用DOMMouseScroll. 经自己测试,即使现在FireFox 19下,也是不识onmousewheel. 在其他派中检测滚动数值的属性是wheelDelta ,向上滚为120,向下为-120. 在火狐中检测滚动数值的属性是detail,向上滚为-3,向下为3.

Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)

日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资源,当然,最重要的还是未能达到自己的预期,是不是很内伤啊.此时,我们就不得不像正常用户操作一样,通过滚动页面至相应的区域,那么该如何滚动呢,此文就此给出答案. 此文实现的页面滚动,是通过 js 操作实现的,敬请各位小主参阅.若有不足之处,敬请大神指正,非常感谢! 直接上码了...... 1 /**

设置鼠标滚动事件

当QScrollview内容过多出现滚动条时,此时如果把鼠标移到里面的一个button上并滚动滑轮时,可以看到QScrollview并不会出现滚动的情况,因此我们就需要为button添加一个滚动事件 注:SubTitlePushButton继承于QPushButton,自定义的一个button类,然后在里面添加鼠标滚动事件 bool SubTitlePushButton::event(QEvent *event) { /* if (event->type() == QEvent::Paint)

鼠标滚动

1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>无标题文档</title> 6 <style> 7 #div1 {width: 100px; height: 100px; background: red;