鼠标滚轮实现图片的缩放-------Day79
今天是7月的最后一天了,不得不说,我定下的七月份剩余几天的计划是完不成了。一则工作确实紧了些,再则没能处理好生活、工作和学习的节奏。这才是人生最大的课题吧。只是也还好。至少自己还在坚持着。事实上真的越来越感觉到自己的不足。可昂扬的斗志却是越来越低沉的迹象,内心里总有个声音在蛊惑自己:别整那些刻意的东西,做给谁看啊,并且刻意的记录的时间全然能够拿来学很多其它的东西,可终于我还在这个蛊惑前坚持着:确实能够腾出很多其它的时间来,也没人会在意在做什么,但是。相同,我不须要走那么快。并且仅仅要知道自己在意就好了。我须要的就是这样一步一步走下去。这条路,才刚刚開始。
“滚轮滑动操作图片缩放”这个功能是我在网上无意中发现的,实际在想的过程中没有想到它的有用点在哪,只是还认为蛮酷的就学习了下。这里也来记录下:
功能介绍:
将鼠标放在图片上。滚轮向上滑动,则图片不断变大。滚轮向下滑动,则图片不断减小
功能拆解分析:
1、第一个要关注的。就是获取滚轮事件的监听,可以获取到滚轮是在上滑还是下滑;
2、随着事件发生的不同。图片不断添加或者降低。
实例分析:
<img id="img" src="run.gif" alt="跑" />
这样我们先在html中放置一个图片,并对它进行样式上的设置
<style type="text/css">
* { margin:0; padding:0; }
body { width:100%; height:100%; overflow:auto; }
#img { display:block; width:20%; margin:20px auto; cursor:-webkit-zoom-in; cursor:-moz-zoom-in; border:4px solid #ccc; border-radius:4px; }
</style>
给图片加边框,是为了更好的观察增大减小的幅度,再有个比較经典的地方就是cursor。这个应该有非常多种样式,合理的这个应用会加分非常多啊,然后我们来实现功能
window.onload = function(){
var img = document.getElementById("img");
if(img.addEventListener){
//ie9,chrome,safari,opera
img.addEventListener("mousewheel",change,true);
//firefox
img.addEventListener("DOMMouseScroll",change,false);
}
else{
//ie 6/7/8
img.attachEvent("onmousewheel",change);
}
首先就是加监听,前面在记录中以前提到过,一方面是兼容性中的addEventListener和attachEvent不同的方法,还有一方面是传递的參数,这个是比較easy出现故障的地方
1、首先在第一个參数中addEventListener中是单纯的事件名称,像mousewheel。而attachEvent中的第一个參数则是事件,像onmousewheel;
2、addEventListener中存在三个參数,第三个是个boolean值,并且必须写,false表示支持浏览器事件的冒泡功能(由里向外),true则表示浏览器事件的捕获功能(由外向里)【这个地方还没有理解透,啥不同呢,回头再分析吧】
3、兼容性,当时的楼主非常全面的兼容了五大浏览器,让我这后来人占了好大廉价,赚到了
监听实现了之后,我们就要依据不同的事件作出不同的回应,这个就该写在我们的方法change()中了
function change(e){
var e = window.event||e;
var oper = Math.max(-1, Math.min(1,(e.wheelDelta || -e.detail)));//wheelDelta和detail
img.style.width = Math.max(50, Math.min(800,img.width + (30*oper)))+"px";
return false;
}
这种方法中。首先学到的是Math.max()和Math.min()两个方法,然后就是逻辑和兼容了
1、Math.max(a,b,c,d)參数能够取多个,取若干值中最大值,当然min就是相应的取最小值嘛。
2、e.wheelDelta||-e.detail,这个又是兼容性的表现了,貌似仅仅有Firefox中使用detail,其它的都是wheelDelta,两者的意义都一样的。都有两个值,可是两个值是不同的detail仅仅能取+/- 3,而wheelDelta则仅仅能取+/- 120,但相同的是整数表示向上,负数表示向下。
3、剩余的逻辑就不说了,已经写的非常easy明了了
时间又不早了,赶在月末发了这篇吧,准备迎接崭新的八月...
鼠标滚轮实现图片的缩放-------Day79的更多相关文章
- js鼠标滚轮滚动图片切换效果
效果体验网址:http://keleyi.com/keleyi/phtml/image/12.htm HTML文件代码: <!DOCTYPE html PUBLIC "-//W3C// ...
- 鼠标滚轮图片放大缩小功能,使用layer弹框后不起作用
今天在项目中遇到的一个问题:点击按钮使用layer弹框弹出一张图片,需要加一个鼠标滚轮放大缩小,图片也跟着放大缩小的功能.于是在网上找了一个demo. DEMO: <!DOCTYPE html ...
- Magnifier.js - 支持鼠标滚轮缩放的图片放大镜效果
Magnifier.js 是一个 JavaScript 库,能够帮助你在图像上实现放大镜效果,支持使用鼠标滚轮放大/缩小功能.放大的图像可以显示在镜头本身或它的外部容器中.Magnifier.js 使 ...
- echarts数据区域缩放(鼠标滚轮、滚动条、拉选框)
当一个echarts图表上的数据很多时,想要查看部分区域的数据状态,可以通过数据区域缩放来实现,现总结三个方法: 鼠标滚轮缩放: var arr = []; for(var i = 0;i<15 ...
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
在场景中添加一个Plan,Camera,Directional Light,Cube.添加两个脚本scrollerScirpt(挂在Camera),CubeDragScript(挂在Cube上). 1 ...
- 关于 WebBrowser调用百度地图API 鼠标滚轮缩放地图级别失灵的解决办法
在桌面程序下 百度地图API的鼠标缩放地图功能可能会失灵无效! 这个原因不是API的问题 小弟试了下在WEB上面是没有问题的 于是考虑可能是WebBrowser的获取焦点问题,于是在主窗体 添加了一个 ...
- SceneControl+AE+鼠标滚轮缩放
要为SceneControl设置鼠标滚轮缩放必须定义委托,因为SceneControl没有Wheel事件,所以委托From的Wheel事件 public Form1() { InitializeCom ...
- js 禁止用户使用Ctrl+鼠标滚轮缩放网页
为什么会有人会使用ctrl+鼠标滚轮缩放网页?坚决禁止! <html> <head> <title>测试</title> <script lang ...
- Engine中如何实现鼠标滚轮缩放反置?
来自:http://zhihu.esrichina.com.cn/?/question/6666 [解决办法]:1,禁用IMapControl的默认鼠标滚轮事件.即设置IMapControl4.Aut ...
随机推荐
- failed to execute goal org.apache.maven.plugins:maven-archetype-plugin错误解决方法
使用maven创建project时碰到如下错误: D:\codes\JSF>mvn archetype:create -DgroupId=com.tutorialspoint.test -Dar ...
- ubuntu下svn在挂在的NTFS分区上无法报错,提示没有权限
终极解决方案: 赋予svn文件root权限 1. 查找svn文件: $ whereis svn svn: /usr/bin/svn /usr/bin/X11/svn /usr/share/.gz $ ...
- B树总结
B树是一种平衡的多路查找树,一棵m阶B树或为空树,或满足下列特性: 1. 每个节点之多有m棵子树 2. 若根节点不是叶子节点,则至少有两颗子树 3. 除根之外所有非终端节点至少有[m/2]可子树 ...
- 【js】--常用DOM库工具
/* 2014年3月16号 常用DOM工具库*/var DOM={}; DOM.getElesByClass=function (strClassName,context){ if(typeof st ...
- 七丶人生苦短,我用python【第七篇】
模块 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个 ...
- hdu 4251 The Famous ICPC Team Again划分树入门题
The Famous ICPC Team Again Time Limit: 30000/15000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- BZOJ2457 [BeiJing2011]双端队列 【贪心】
题目 Sherry现在碰到了一个棘手的问题,有N个整数需要排序. Sherry手头能用的工具就是若干个双端队列. 她需要依次处理这N个数,对于每个数,Sherry能做以下两件事: 1.新建一个双端队列 ...
- mybatis如何在控制台打印执行的sql语句
log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log ...
- DelegatingActionProxy
使用 DelegatingActionProxy 使用 DelegatingRequestProcesso 非常简单方便,但有一个缺点:RequestProcessor 是Struts 的一个扩展点, ...
- 【POJ3415】Common Substrings(后缀数组,单调栈)
题意: n<=1e5 思路: 我的做法和题解有些不同 题解是维护A的单调栈算B的贡献,反过来再做一次 我是去掉起始位置不同这个限制条件先算总方案数,再把两个串内部不合法的方案数减去 式子展开之后 ...