鼠标滚轮实现图片的缩放-------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 ...
随机推荐
- HDU 3506 DP 四边形不等式优化 Monkey Party
环形石子合并问题. 有一种方法是取模,而如果空间允许的话(或者滚动数组),可以把长度为n个换拓展成长为2n-1的直线. #include <iostream> #include <c ...
- 二分查找与 bisect 模块
Python 的列表(list)内部实现是一个数组,也就是一个线性表.在列表中查找元素可以使用 list.index() 方法,其时间复杂度为O(n).对于大数据量,则可以用二分查找进行优化.二分查找 ...
- x86保护模式 任务状态段和控制门
x86保护模式 任务状态段和控制门 每个任务都有一个任务状态段TSS 用于保存任务的有关信息 在任务内权变和任务切换时 需要用到这些信息 任务内权变的转移和任务切换 一 ...
- HDU 4280 Island Transport
Island Transport Time Limit: 10000ms Memory Limit: 65536KB This problem will be judged on HDU. Origi ...
- php.ini配置参数详解
下面对php.ini中一些安全相关参数的配置进行说明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...
- 【Android】SharedPreference存储数据
SharedPreference存储数据 使用SharedPreference保存数据 putString(key,value) 使用SharedPreference读取数据 getString( ...
- Snmp的学习总结——Snmp的基本概念
摘自:http://www.cnblogs.com/xdp-gacl/p/3978825.html 一.SNMP简单概述 1.1.什么是Snmp SNMP是英文"Simple Network ...
- cf3D Least Cost Bracket Sequence
This is yet another problem on regular bracket sequences. A bracket sequence is called regular, if b ...
- java system.out.printf()的使用方法
package test; public class Main { public static void main(String[] args) { // 定义一些变量,用来格式化输出. double ...
- N*N数码问题
奇数码问题 时间限制: 1 Sec 内存限制: 128 MB 题目描述 你一定玩过八数码游戏,它实际上是在一个3*3的网格中进行的,1个空格和1~8这8个数字恰好不重不漏地分布在这3*3的网格中. ...