鼠标滚轮图片放大缩小功能,使用layer弹框后不起作用

今天在项目中遇到的一个问题:点击按钮使用layer弹框弹出一张图片,需要加一个鼠标滚轮放大缩小,图片也跟着放大缩小的功能。于是在网上找了一个demo。

DEMO:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml" >
 3 <head>
 4     <title>图片放大缩小</title>
 5     <style type="text/css">
 6       div{
 7           width: 100px;
 8           height: 100px;
 9       }
10     </style>
11     <script type="text/javascript" src="jquery-1.9.1.js"></script>
12     <script type="text/javascript" src="layer.js"></script>
13 </head>
14 <body>
15     <div id="mqp">
16         <img id="myimage" src="kmlogo.png" alt="my image" />
17     </div>
18     <script type="text/javascript">
19         var myimage = document.getElementById("myimage");
20             // IE9, Chrome, Safari, Opera
21             myimage.addEventListener("mousewheel", MouseWheelHandler, false);
22             // Firefox
23             myimage.addEventListener("DOMMouseScroll", MouseWheelHandler, false);
24             myimage.attachEvent("onmousewheel", MouseWheelHandler);
25         function MouseWheelHandler(e) {
26             // cross-browser wheel delta
27             var e = window.event || e; // old IE support
28             var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
29             myimage.style.width = Math.max(50, Math.min(1800, myimage.width + (30 * delta))) + "px";
30             return false;
31         }
32     </script>
33 </body>
34 </html>  

这个例子没有引用layer,而是直接显示图片,滚轮放大缩小图片是正常的,当加入layer后,代码如下:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml" >
 3 <head>
 4     <title>??????????</title>
 5     <style type="text/css">
 6       div{
 7           width: 100px;
 8           height: 100px;
 9       }
10     </style>
11     <script type="text/javascript" src="jquery-1.9.1.js"></script>
12     <script type="text/javascript" src="layer.js"></script>
13 </head>
14 <body>
15     <div id="mqp">
16         <img id="myimage" src="kmlogo.png" alt="my image" />
17     </div>
18     <script type="text/javascript">
19         layer.open({
20             type: 1,
21             shade: false,
22             title: false, //不显示标题
23             content: document.getElementById("mqp"), //捕获的元素,注意:最好该指定的元素要存放在body最外层,否则可能被其它的相对元素所影响
24             cancel: function(){
25                 layer.msg(‘捕获就是从页面已经存在的元素上,包裹layer的结构‘, {time: 5000, icon:6});
26             }
27         });
28
29         var myimage = document.getElementById("myimage");
30             // IE9, Chrome, Safari, Opera
31             myimage.addEventListener("mousewheel", MouseWheelHandler, false);
32             // Firefox
33             myimage.addEventListener("DOMMouseScroll", MouseWheelHandler, false);
34             myimage.attachEvent("onmousewheel", MouseWheelHandler);
35         function MouseWheelHandler(e) {
36             // cross-browser wheel delta
37             var e = window.event || e; // old IE support
38             var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
39             myimage.style.width = Math.max(50, Math.min(1800, myimage.width + (30 * delta))) + "px";
40             return false;
41         }
42     </script>
43 </body>
44 </html>  

使用layer后,图片无法随着鼠标滚轮的放大、缩小做出相应的变化,于是就想是不是layer把鼠标滚轮事件屏蔽掉了,问同事并在网上搜索了一通,没有找到好的解决方案,后来临近下班时,就想颠倒一下layer的顺序看看,代码如下:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml" >
 3 <head>
 4     <title>??????????</title>
 5     <style type="text/css">
 6       div{
 7           width: 100px;
 8           height: 100px;
 9       }
10     </style>
11     <script type="text/javascript" src="jquery-1.9.1.js"></script>
12     <script type="text/javascript" src="layer.js"></script>
13 </head>
14 <body>
15     <div id="mqp">
16         <img id="myimage" src="kmlogo.png" alt="my image" />
17     </div>
18     <script type="text/javascript">
19         var myimage = document.getElementById("myimage");
20             // IE9, Chrome, Safari, Opera
21             myimage.addEventListener("mousewheel", MouseWheelHandler, false);
22             // Firefox
23             myimage.addEventListener("DOMMouseScroll", MouseWheelHandler, false);
24             myimage.attachEvent("onmousewheel", MouseWheelHandler);
25         function MouseWheelHandler(e) {
26             // cross-browser wheel delta
27             var e = window.event || e; // old IE support
28             var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
29             myimage.style.width = Math.max(50, Math.min(1800, myimage.width + (30 * delta))) + "px";
30             return false;
31         }
32
33         layer.open({
34             type: 1,
35             shade: false,
36             title: false, //不显示标题
37             content: document.getElementById("mqp"), //捕获的元素,注意:最好该指定的元素要存放在body最外层,否则可能被其它的相对元素所影响
38             cancel: function(){
39                 layer.msg(‘捕获就是从页面已经存在的元素上,包裹layer的结构‘, {time: 5000, icon:6});
40             }
41         });
42     </script>
43 </body>
44 </html>  

结果鼠标滚轮使图片放大缩小功能正常了,然后就想这是为什么呢?是因为js执行顺序问题还是浏览器渲染机制问题或是其他什么原因,希望了解的大神指点一二~~~

时间: 2024-10-24 16:27:09

鼠标滚轮图片放大缩小功能,使用layer弹框后不起作用的相关文章

mxGraph绘图区域使用鼠标滚轮实现放大/缩小

// 重写鼠标滚轮事件 mxEvent.addMouseWheelListener = function (funct) { } // 增加初次加载事件 window.onload = function () { var element= document.getElementById('graph'); addScrollListener(element, wheelHandle); } function addScrollListener(element, wheelHandle) { if

android photoview 图片放大缩放功能 ImageView

android 图片浏览功能  图片放大缩小 使用 photoview 双击或双指缩放的ImageView 使用多点触控和双击. 滚动,以平滑滚动甩. 实际效果参考 图片来自 : http://a.code4app.com/android/PhotoView/5241a4026803fa1327000000 下载完成后 导入IDE里面 将lib  添加进来 贴出 photoview的代码: /****************************************************

浅谈CSS和JQuery实现鼠标悬浮图片放大效果

对于刚刚学习网页前台设计的同学一定对图片的处理非常苦恼,那么这里简单的讲解一下几个图片处理的实例. 以.net为平台,微软的Visual Studio 2013为开发工具,当然前台技术还是采用CSS3和HTML,Java的小伙伴不要绕道~~~ 言归正传,那么我们首先要完成什么样的图片处理呢? 一.CSS3图片的放大 css3中,有一个属性transform,官方的解释是:允许向元素应用2D或3D的转换.这些转换当然就包含旋转.缩放.移动或倾斜了.有兴趣的同学可以继续了解http://www.w3

jQuery照片伸缩效果,不是单纯的图片放大缩小,不影响其他元素的布局

之前在网上看到这种特效,无奈当时没有收藏网址,导致后来一度不知道这个特效是怎么实现的.今天特意在网上搜罗了一下,果然功夫不负有心人,被我找到了. 我也努力过自己尝试着写: 但只是单纯的图片放大,而且还影响了图片周围的元素的布局(因为图片放大占据了更大的空间). 后来发现要灵活巧妙的运用overflow和position这两个属性,就能达到目的.其实我觉得CSS(CSS3)中的overflow和position(顺带的top,bottom,left,right)简直是做网页特效无解的组合,当然还是

javascript仿新浪微博图片放大缩小及旋转效果

经常看到新浪微博里有图片放大缩小旋转效果,感觉效果还不错,所以就想试着做一个类似的demo出来,至于旋转对于IE可以用滤镜来解决,标准的浏览器可以用html5中的canvas画布来解决. 思路:1.点击小图后,小图隐藏掉,在小图父级元素后增加一张大图且显示出来. 2.点击往左转,往右转触发旋转方法. 3. 点击收起按钮,把1的步骤反过来 隐藏大图 显示小图. 4. 点击查看原图功能 目前没有做成js灯箱效果,直接打开一个新连接.但是如果想做成灯箱效果的话,可以看我这篇博客,灯箱效果演示 我们可以

支持鼠标滚轮图片自适应的焦点图代码等

支持鼠标滚轮图片自适应的焦点图代码 支持鼠标滚轮图片自适应的焦点图代码,纯JS构建,可用键盘左右键切换图片,倒序回滚,另外鼠标停止响应后可自动播放功能,兼容主流浏览器,懒人图库推荐下载! 使用方法: 1.在head区域引入样式表文件lrtk.css 2.在head区域引入lrtk.js 3.在你的网页中加入<!-- 代码 开始 --><!-- 代码 结束 -->注释区域代码即可 4.修改间隔时间和自动播放倒计时时间,请打开lrtk.js根据注释提示修改 5.去掉首页文字提示后,请注

CSS实现鼠标移动图片实现切换功能

CSS实现鼠标移动图片实现切换功能:当鼠标放在一个图片上的时候可以切换为其他图片,使用javascript可以实现,下面介绍一下如何使用CSS实现此功能.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" />

swift3.0 图片放大缩小动画效果

一. 内容说明 跟我之前这篇类似,只不过那篇是OC版本,这篇是Swift版本 OC版本链接地址 目的:通过kingfisher请求5张图片,展示出来.然后利用图片放大缩小管理类展示图片,多张图片可以滑动浏览 效果图如下,想看动态的效果图,请看上面链接中的OC版本效果图,跟这篇是一样的. 本demo,只加载本地图片的demo下载链接 ,需要加载网络图片的,需要下载Kingfisher 二.源码展示 0. 图片测试demo源码 [html] view plain copy import Founda

图片放大缩小闪烁效果

<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>css3 图片放大缩小闪烁效果</title> <style></style> <style> body{background:#7fa8d1;opacity:0.5.6;} .flicker_down{ width:105p