用HTML5实现鼠标滚轮事件放大缩小图片的功能


Posted in HTML / CSS onJune 25, 2015

 你我都知道在HTML5网页中添加鼠标滚轮事件能够更好的让用户与网页进行交互操作。而在HTML5中,鼠标滚轮并不仅仅就只能上下滑动网页,实际上你还可以依靠这个完成更多的功能,比如视野平面的放大与缩小。

看看实际演示效果
大部分浏览器都是支持鼠标滚轮事件的,所以你可以先订阅鼠标滚轮事件的方法,每当事件被触发时,你能获取一个名为 wheelDelta 的属性,它代表刚才鼠标滚轮改变的大小,其中正值表示滚轮往下滑动,负值表示滚轮往上滑动。数值的绝对值越大,滑动范围越大。

但不幸的是依然有一款浏览器是不支持鼠标滚轮事件的。那就是FireFox。Mozilla 已经实现了一个名为"DOMMouseScroll"的事件的处理,它会传递一个名为 event 且附带了名为 detail 属性的事件参数过来,然而,这个 detail 属性不同于 wheelDelta,它只能返回正值,即只能坚持鼠标滚轮向下滚动的值。

你应该特别注意一下,Apple公司在Safari浏览器中也禁用了鼠标滚动控制页面上下滑动,但是此功能依然在webkit引擎中正常使用的,所以你写的代码是不会触发什么问题的。

添加鼠标滚轮事件处理方法
首先我们在网页中添加一个图片,待会就能用鼠标滚轮控制此图片的缩放
 

XML/HTML Code复制内容到剪贴板
  1. <img id="myimage" src="myimage.jpg" alt="my image" />  

现在来添加鼠标滚轮事件处理代码
 

XML/HTML Code复制内容到剪贴板
  1. var myimage = document.getElementById("myimage");   
  2. if (myimage.addEventListener) {   
  3.     // IE9, Chrome, Safari, Opera   
  4.     myimage.addEventListener("mousewheel", MouseWheelHandler, false);   
  5.     // Firefox   
  6.     myimage.addEventListener("DOMMouseScroll", MouseWheelHandler, false);   
  7. }   
  8. // IE 6/7/8   
  9. else myimage.attachEvent("onmousewheel", MouseWheelHandler);  

为了让不同浏览器都能支持的处理做法

在下面这个案例中,我们将对Firefox的detail值取反然后返回1或者-1的其中一个
 

XML/HTML Code复制内容到剪贴板
  1. function MouseWheelHandler(e) {   
  2.     // cross-browser wheel delta   
  3.     var e = window.event || e; // old IE support   
  4.     var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));  

现在我们直接决定图片的大小范围。以下代码将图片的宽度范围设置在50-800个像素之间
 

XML/HTML Code复制内容到剪贴板
  1.     myimage.style.width = Math.max(50, Math.min(800, myimage.width + (30 * delta))) + "px";   
  2.     return false;   
  3. }  

最后一点,我们在方法中返回false是为了终止标准的鼠标滚轮事件处理,以防它上下滑动网页。
查看实际演示

HTML / CSS 相关文章推荐
CSS3 3D制作实战案例分析
Sep 18 HTML / CSS
CSS3 特效范例整理
Aug 22 HTML / CSS
利用纯css3实现的文字亮光特效的代码演示
Nov 27 HTML / CSS
CSS3中的Media Queries学习笔记
May 23 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
Jan 31 HTML / CSS
HTML5中的autofocus(自动聚焦)属性介绍
Apr 23 HTML / CSS
HTML5 video标签(播放器)学习笔记(二):播放控制
Apr 24 HTML / CSS
html5生成柱状图(条形图)效果的实例代码
Mar 25 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
Apr 24 HTML / CSS
Html5页面中的返回实现的方法
Feb 26 HTML / CSS
recorder.js 基于Html5录音功能的实现
May 26 HTML / CSS
css3 选择器
May 11 HTML / CSS
检测浏览器对HTML5和CSS3支持度的方法
Jun 25 #HTML / CSS
HTML5的一个显示电池状态的API简介
Jun 18 #HTML / CSS
举例详解HTML5中使用JSON格式提交表单
Jun 16 #HTML / CSS
带你认识HTML5中的WebSocket
May 22 #HTML / CSS
用HTML5制作视频拼图的教程
May 13 #HTML / CSS
用HTML5制作一个简单的弹力球游戏
May 12 #HTML / CSS
用HTML5制作一个简单的桌球游戏的教程
May 12 #HTML / CSS
You might like
php单件模式结合命令链模式使用说明
2008/09/07 PHP
PHP修改session_id示例代码
2014/01/08 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
JS面向对象编程详解
2016/03/06 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
python选择排序算法实例总结
2015/07/01 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
Pycharm安装python库的方法
2020/11/24 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
Artist Guitars新西兰:乐器在线商店
2017/09/17 全球购物
台湾流行服饰购物平台:OB严选
2018/01/21 全球购物
"序列点" 是什么
2016/07/29 面试题
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
大学生村官事迹材料
2014/01/21 职场文书
大学生学年自我鉴定
2014/02/10 职场文书
世界气象日活动总结
2015/02/27 职场文书
公司员工辞职信范文
2015/05/12 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
Ruby处理CSV数据方法详解
2022/04/18 Ruby