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 相关文章推荐
百度地图api应用标注地理位置信息(js版)
Feb 01 Javascript
js中数组Array的一些常用方法总结
Aug 12 Javascript
判断JS对象是否拥有某种属性的两种方式
Dec 02 Javascript
jquery实现人性化的有选择性禁用鼠标右键
Jun 30 Javascript
javascript实现复选框选中属性
Mar 25 Javascript
一个仿微博登陆邮箱提示框js开发案例
Jul 28 Javascript
使用jQuery调用XML实现无刷新即时聊天
Aug 07 Javascript
JQuery判断正整数整理小结
Aug 21 jQuery
基于javascript中的typeof和类型判断(详解)
Oct 27 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
May 31 Javascript
手淘flexible.js框架使用和源代码讲解小结
Oct 15 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
May 09 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在服务器执行exec命令失败的解决方法
2012/03/03 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
python按照多个条件排序的方法
2019/02/08 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
python 实现多维数组(array)排序
2020/02/28 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
什么是岗位职责
2013/11/12 职场文书
写给爸爸的道歉信
2014/01/15 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书