使用前提:

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

实现步骤:

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

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

  1. IE11下使用fixed定位时鼠标滚动不平滑

    很久不用IE了,近期做兼容性测试发现一个fixed定位的问题,当元素使用fixed定位时,其应该不随页面滚动,在chrome/firefox/edge下都很完美,元素完全不动,但是使用IE11时,如果 ...

  2. JavaScript判断鼠标滑轮是向下还是向上滚动

    我们常用的就是鼠标,鼠标中键一般都用于滑动网页,但是网页中很多很炫的效果,使用鼠标滑轮操作更好. 当然对于手机就没有这个设备了,所以就不用考虑手机端的实现方法,手机端有触摸滑动事件. 使用JavaSc ...

  3. 纯css解决div隐藏浏览器原生滚动条,但保留鼠标滚动效果的问题

    当我们的内容超出了我们的div,往往会出现滚动条,影响美观.尤其是当我们在做一些导航菜单的时候.滚动条一出现就破坏了UI效果.  我们不希望出现滚动条,也不希望超出去的内容被放逐,就要保留鼠标滚动的效 ...

  4. 纯css,div隐藏滚动条,保留鼠标滚动效果。

    示例1: html,body { height: 100%; } body { overflow: hidden; } .full-screen { position: relative; width ...

  5. 通过HTML+CSS+Javascript实现向下滚动滚动条出现导航栏并出现回到顶部按钮点击按钮回到顶部(一)

    回到顶部实例一 效果:默认隐藏导航栏,当滚动条滚到超过300px后导航栏和按钮出现,点击回到顶部按钮回到顶部,并隐藏导航栏和按钮(导航栏和按钮都是固定定位) <!doctype html> ...

  6. JavaScript一个鼠标滚动事件的实例

    <script type="text/javascript" src="./whenReady.js"></script> <!- ...

  7. 通通玩blend美工(6)下——仿iPhone滚动选择器的ListBox(交互逻辑)

    原文:通通玩blend美工(6)下--仿iPhone滚动选择器的ListBox(交互逻辑) 上一篇我们已经把界面画出来了,这篇我们就来制作交互的逻辑吧.上一篇的电梯: http://www.cnblo ...

  8. WIN7下vs2010滑轮滚动不正确的解决方法

    win7下vs2010在滚动滑轮时文档滚动条不滚动而是解决方案的滚动条滚动的解决方法, 控制面板>设备和打印机>鼠标设置>滚轮选项卡里面将滚轮功能设置设为只使用office97预设的 ...

  9. wpf图片查看器,支持鼠标滚动缩放拖拽

    最近项目需要,要用到一个图片查看器,类似于windows自带的图片查看器那样,鼠标滚动可以缩放,可以拖拽图片,于是就写了这个简单的图片查看器. 前台代码: <Window x:Class=&qu ...

随机推荐

  1. linux_shell 编程学习-初识she'll

    一.she'll编程规范 1.she'll脚本命名一般为英文的大小写; 2.不能用特殊符号.空格来命名; 3.she'll脚本后缀以.sh结尾; 4.不建议she'll命名为纯数字,一般以脚本功能命名 ...

  2. java开发环境配置——IntelliJ IDEA

    关于开发工具,之前是用eclipse,后来用了一段时间idea后,发现idea比eclipse好用太多了,所以推荐大家用idea 官网下载地址:https://www.jetbrains.com/id ...

  3. Web前端:博客美化:一、模板美化

    1.选用模板simplememory 2.写css放在 这些会覆盖掉原来的css样式 我是在网上找的css代码二次加工的 : ) /*1.针对simplememory的修改*/ #google_ad_ ...

  4. 小tips:node起一个简单服务,打开本地项目或文件浏览

    1.安装nodejs 2.在项目文件夹目录下创建一个js文件,命名server.js(自定义名称),内容如下 var http = require('http'); var fs = require( ...

  5. 一对多Excel自定义函数:SVLOOKUP

    语法规则 该函数的语法规则如下: SVLOOKUP(lookup_value,table_array,col_index_num,nth_appearance,unique_value) 参数 简单说 ...

  6. 解决Win10系统本地主机,网络受限占用CPU过高的问题

    Win10版本为2015年第一个版本,第一次安装时没有这个问题,后面每次安装后开机正常,但是只要运行一段时间后(机子有运行各种软件的情况),发现CPU使用率为100% 即使结束所有在运行的程序,依然居 ...

  7. c/c++ linux epoll系列3 利用epoll_wait设置timeout时间长度

    linux epoll系列3 利用epoll_wait设置timeout时间长度 epoll_wait函数的第四个参数可以设置,epoll_wait函数的等待时间(timeout时间长度). 例子1, ...

  8. Swift JSON字符串和字典以及数组的互转

    1.JSONString转换为字典 // JSONString转换为字典 func getDictionaryFromJSONString(jsonString:String) ->NSDict ...

  9. 【eclipse】mybatis配置文件创建与mapper接口文件创建

    什么是mybatis: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. mybatis配置文件: <?xml version="1.0" ...

  10. 使用mybatis操作AS400数据库

    先简单说一下怎么使用[jt400.jar]连接AS400上的DB2数据库. ※ jt400.jar资源,如果有安装AS400客户端的话,参考IBM官网 ※ http://www-01.ibm.com/ ...