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 相关文章推荐
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
js的表单操作 简单计算器
Dec 29 Javascript
关于JQuery($.load)事件的用法和分析
Apr 09 Javascript
extjs render 用法介绍
Sep 11 Javascript
实例详解ECMAScript5中新增的Array方法
Apr 05 Javascript
Gulp实现静态网页模块化的方法详解
Jan 09 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
Dec 20 Javascript
JavaScript运动原理基础知识详解
Apr 02 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
Jul 21 Javascript
ant design vue 表格table 默认勾选几项的操作
Oct 31 Javascript
vue + el-form 实现的多层循环表单验证
Nov 25 Vue.js
vue 项目@change多个参数传值多个事件的操作
Jan 29 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 mvc开发模式的感想
2011/06/28 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
checkbox使用示例
2013/08/23 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
jquery动态添加option示例
2013/12/30 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
微信跳一跳python代码实现
2018/01/05 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
Python如何调用JS文件中的函数
2019/08/16 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
关于祖国的演讲稿
2014/05/04 职场文书
建议书的格式
2014/05/12 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
借款担保书范文
2014/05/13 职场文书
初一新生军训方案
2014/05/22 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
大学生操行评语大全
2014/12/31 职场文书
业务员岗位职责范本
2015/04/03 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL
java实现web实时消息推送的七种方案
2022/07/23 Java/Android