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 相关文章推荐
跨浏览器的事件对象介绍
Jun 27 Javascript
js实现的复制兼容chrome和IE
Apr 03 Javascript
JavaScript中的数值范围介绍
Dec 29 Javascript
跟我学习javascript的异步脚本加载
Nov 20 Javascript
javascript编程异常处理实例小结
Nov 30 Javascript
JS中BOM相关知识点总结(必看篇)
Nov 22 Javascript
jquery实现百叶窗效果
Jan 12 Javascript
AngularJS 文件上传控件 ng-file-upload详解
Jan 13 Javascript
Angular2 自定义validators的实现方法
Jul 05 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
Dec 06 Javascript
JS实现马赛克图片效果完整示例
Apr 13 Javascript
详解一些适用于Node.js的命名约定
Dec 08 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数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
JS模板实现方法
2013/04/03 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
Python中__call__用法实例
2014/08/29 Python
浅谈python迭代器
2017/11/08 Python
python 列表降维的实例讲解
2018/06/28 Python
基于pytorch的保存和加载模型参数的方法
2019/08/17 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
python中什么是面向对象
2020/06/11 Python
keras得到每层的系数方式
2020/06/15 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
Linux内核产生并发的原因
2016/11/08 面试题
Java基础面试题
2014/07/19 面试题
如何执行一个shell程序
2012/11/23 面试题
师范生实习自我鉴定
2013/11/01 职场文书
买房子个人收入证明
2014/10/12 职场文书
车间质检员岗位职责
2015/04/08 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
签字仪式主持词
2015/07/03 职场文书
压缩Redis里的字符串大对象操作
2021/06/23 Redis
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python