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 相关文章推荐
COM中获取JavaScript数组大小的代码
Nov 22 Javascript
Javascript页面添加到收藏夹的简单方法
Aug 07 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
Jul 18 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
Aug 21 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
Nov 04 Javascript
浅谈Vue-cli 命令行工具分析
Nov 22 Javascript
尝试自己动手用react来写一个分页组件(小结)
Feb 09 Javascript
使用Layui搭建后台管理界面的操作方法
Sep 20 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
Mar 06 Javascript
简单了解前端渐进式框架VUE
Jul 20 Javascript
vue 数据操作相关总结
Dec 17 Vue.js
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 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
一个程序下载的管理程序(二)
2006/10/09 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
javascript Object与Function使用
2010/01/11 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
js Select下拉列表框进行多选、移除、交换内容的具体实现方法
2013/08/13 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
基于LayUI实现前端分页功能的方法
2017/07/22 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
JS实现图片切换特效
2019/12/23 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
轻松实现python搭建微信公众平台
2016/02/16 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Html5定位终极解决方案
2020/02/05 HTML / CSS
生物专业个人自荐信范文
2013/11/29 职场文书
甜点店创业计划书
2014/01/27 职场文书
《童年》教学反思
2014/02/18 职场文书
大学生心理活动总结
2014/07/04 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
财务负责人岗位职责
2015/02/03 职场文书
长征观后感
2015/06/09 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL