今天是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的更多相关文章

  1. js鼠标滚轮滚动图片切换效果

    效果体验网址:http://keleyi.com/keleyi/phtml/image/12.htm HTML文件代码: <!DOCTYPE html PUBLIC "-//W3C// ...

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

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

  3. Magnifier.js - 支持鼠标滚轮缩放的图片放大镜效果

    Magnifier.js 是一个 JavaScript 库,能够帮助你在图像上实现放大镜效果,支持使用鼠标滚轮放大/缩小功能.放大的图像可以显示在镜头本身或它的外部容器中.Magnifier.js 使 ...

  4. echarts数据区域缩放(鼠标滚轮、滚动条、拉选框)

    当一个echarts图表上的数据很多时,想要查看部分区域的数据状态,可以通过数据区域缩放来实现,现总结三个方法: 鼠标滚轮缩放: var arr = []; for(var i = 0;i<15 ...

  5. 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放

    在场景中添加一个Plan,Camera,Directional Light,Cube.添加两个脚本scrollerScirpt(挂在Camera),CubeDragScript(挂在Cube上). 1 ...

  6. 关于 WebBrowser调用百度地图API 鼠标滚轮缩放地图级别失灵的解决办法

    在桌面程序下 百度地图API的鼠标缩放地图功能可能会失灵无效! 这个原因不是API的问题 小弟试了下在WEB上面是没有问题的 于是考虑可能是WebBrowser的获取焦点问题,于是在主窗体 添加了一个 ...

  7. SceneControl+AE+鼠标滚轮缩放

    要为SceneControl设置鼠标滚轮缩放必须定义委托,因为SceneControl没有Wheel事件,所以委托From的Wheel事件 public Form1() { InitializeCom ...

  8. js 禁止用户使用Ctrl+鼠标滚轮缩放网页

    为什么会有人会使用ctrl+鼠标滚轮缩放网页?坚决禁止! <html> <head> <title>测试</title> <script lang ...

  9. Engine中如何实现鼠标滚轮缩放反置?

    来自:http://zhihu.esrichina.com.cn/?/question/6666 [解决办法]:1,禁用IMapControl的默认鼠标滚轮事件.即设置IMapControl4.Aut ...

随机推荐

  1. Django的中间件及WSGI

    什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责做一些特定的 ...

  2. IOS 自动布局-UIStackPanel和UIGridPanel(一)

    我以前是做windows phone开发的,后来转做IOS的开发,因此很多windows phone上面的开发经验也被我带到了IOS中.其实有些经验本身跟平台无关,跟平台有关的无非就是实现方法而已.好 ...

  3. apache2虚拟主机实现一个服务器绑定多个域名

    1.apache2的配置 首先要配置好apache2,如果未配置,请参考我之前的博文:lamp的配置 2.域名的解析 将全部域名的www和@的A记录解析到云服务器的IP 3.虚拟主机的配置 1.配置h ...

  4. layer2-1 二层

    一   概述    一层的相关介绍 CSMA/CD 网桥和交换机的区别 冲突    共享      端口密度     性能   功能   交换机的三种主流转发方式 存储转发         完整的收到 ...

  5. 九度oj 题目1012:畅通工程

    题目描述: 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路 ...

  6. 九度oj 题目1140:八皇后

    题目描述: 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题. 对于某个满足要求的 ...

  7. 基于SEDA的异步框架设计与实现

    基于SEDA的异步框架设计与实现 二.为什么使用SEDA 目前,面对并发环境,主流互联网服务器编程模型有两种:多线程模型以及事件驱动模型.但是这两个模型都不足以解决这个问题.我们来首先看一下这两种编程 ...

  8. Bzoj2007 [Noi2010]海拔(平面图最短路)

    2007: [Noi2010]海拔 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2742  Solved: 1318[Submit][Status] ...

  9. 【HDOJ6228】Tree(树)

    题意:有一棵n个点的树,在树上的点涂色,每个点涂一种颜色,一共可以涂k种颜色, 然后把同一种颜色(比如说x)的点用最优方案连起来,在连线的边涂上x颜色,问涂k次的边最多有几条 k<=500 si ...

  10. FGrowth算法

    一:背景 http://www.cnblogs.com/aijianiula/p/5397857.html 上节中,总结了频繁项集挖掘的最基本算法:Apriori算法.这篇文章写下它的改进算法FGro ...