Js控制滑轮左右滑动实例


Posted in Javascript onFebruary 13, 2015

今天弄了一个东西,页面本来是横向,所以底部有横向滚动条,竖着就没有滚动条了,现在要求是鼠标滑轮要左右滚动,这就需要写js代码来实现了,写这个的过程中遇到很大麻烦

ie 火狐 chrome 三个浏览器支持的函数完全不一样,真是疯啦。

这里有几个知识点说明一下
监控滑轮的事件
ie:onmousewheel
firfox:DOMMouseScroll
chrome:mousewheel
哎真是无语
滚动的返回值也是不一样的
firfox用detail 返回 +-3
其他的用wheelDelta 返回 +-120
有返回值判断滚动的方向

还有一般浏览器除了chrome判断页面的左移动用document.documentElement.scrollLeft
但是chrome浏览器要用document.body.scrollLeft

好了代码分享如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
 
<body>
<div id="test" style="width:3000px; height:500px; background:#666;"></div>
<script language="javascript">
 
var dbody=document.getElementById('test');
//ff用
objAddEvent(document,'DOMMouseScroll', function(e){return mouse_scroll(e);})
 
//非ff chrome 用
objAddEvent(document,'mousewheel', function(e){return mouse_scroll(e);})
 
//chrome用
objAddEvent(dbody,'mousewheel', function(e){return mouse_scroll(e);})
function mouse_scroll(e){
e=e || window.event;
var delD=e.wheelDelta?e.wheelDelta: -e.detail*40;//判断上下方向
var move_s=delD>0?-50:50;
document.documentElement.scrollLeft+=move_s; //非chrome浏览器用这个
//chrome浏览器用这个
if(document.documentElement.scrollLeft==0)document.body.scrollLeft+=move_s;
 
return false;
}
//这个是给对象增加监控方法的函数
function objAddEvent(oEle, sEventName, fnHandler)
{
if(oEle.attachEvent) oEle.attachEvent('on'+sEventName, fnHandler);
else oEle.addEventListener(sEventName, fnHandler, false);
}
 
 
</script>
</body>
</html>

这个代码其实有点问题就是在chrome浏览器下只有鼠标放到那个灰色内才能滑动,这个问题我一直没有解决掉,如果那个高手解决可以留言告诉我,谢谢了。

Javascript 相关文章推荐
转一个日期输入控件,支持FF
Apr 27 Javascript
JS完成代码前最好对其做5件事
Apr 07 Javascript
jquery datatable服务端分页
Aug 31 Javascript
简单理解vue中track-by属性
Oct 26 Javascript
js实现五星评价功能
Mar 08 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
May 11 Javascript
详解Node.js开发中的express-session
May 19 Javascript
vue过渡和animate.css结合使用详解
Jun 14 Javascript
十个免费的web前端开发工具详细整理
Sep 18 Javascript
js取0-9随机取4个数不重复的数字代码实例
Mar 27 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
Jan 22 Javascript
详细分析vue响应式原理
Jun 22 Javascript
JavaScript函数作用域链分析
Feb 13 #Javascript
JavaScript匿名函数用法分析
Feb 13 #Javascript
js实现进度条的方法
Feb 13 #Javascript
动态加载js的方法汇总
Feb 13 #Javascript
jQuery EasyUI datagrid实现本地分页的方法
Feb 13 #Javascript
jQuery向后台传入json格式数据的方法
Feb 13 #Javascript
浅谈轻量级js模板引擎simplite
Feb 13 #Javascript
You might like
php循环输出数据库内容的代码
2008/05/24 PHP
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
javascript 常用关键字列表集合
2007/12/04 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
JS实现的倒计时效果实例(2则实例)
2015/12/23 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
Python使用py2exe打包程序介绍
2014/11/20 Python
Python之py2exe打包工具详解
2017/06/14 Python
python距离测量的方法
2018/03/06 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
Python 实现数组相减示例
2019/12/27 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
XML文档面试题
2015/08/05 面试题
Delphi软件工程师试题
2013/01/29 面试题
简历里的自我评价
2014/01/31 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
九一八事变演讲稿
2014/09/05 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
sql注入报错之注入原理实例解析
2022/06/10 MySQL