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 相关文章推荐
我见过最全的个人js加解密功能页面
Dec 12 Javascript
JavaScript中OnLoad几种使用方法
Dec 15 Javascript
js时间比较示例分享(日期比较)
Mar 05 Javascript
AngularJS学习笔记之ng-options指令
Jun 16 Javascript
使用jQuery卸载全部事件的思路详解
Apr 03 jQuery
Google 爬虫如何抓取 JavaScript 的内容
Apr 07 Javascript
es6 字符串String的扩展(实例讲解)
Aug 03 Javascript
理解 Node.js 事件驱动机制的原理
Aug 16 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
May 04 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
Sep 26 Javascript
vue data恢复初始化数据的实现方法
Oct 31 Javascript
三种方式清除vue路由跳转router-link的历史记录
Apr 10 Vue.js
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 Undefined index和Undefined variable的解决方法
2008/03/27 PHP
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
优化php效率,提高php性能的一些方法
2011/03/24 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
基于jQuery的动态表格插件
2011/03/28 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
Python 多线程Threading初学教程
2017/08/22 Python
基于python实现名片管理系统
2018/11/30 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
基于python实现坦克大战游戏
2020/10/27 Python
超市重阳节活动方案
2014/02/10 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
2014年纪委工作总结
2014/12/05 职场文书
优秀教研组申报材料
2014/12/26 职场文书
校长新学期寄语2016
2015/12/04 职场文书
商业计划书范文
2019/04/24 职场文书
Go语言并发编程 sync.Once
2021/10/16 Golang
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏