作家
登录

JavaScript 图片放大镜(可拖放、缩放效果)第1/4页

作者: 来源:www.28hudong.com 2013-03-30 02:56:26 阅读 我要评论

前些日子突然想做一个透镜效果,就突然想到了这个效果,于是找出当年“珍藏”的代码决定一尝所愿。 前言:这个程序主要分三部分:层的拖放、层的缩放、图片切割(包括预览)。 其中层的拖放是很常见的效果,层的缩放有点难度,图片切割看着炫其实原理也很简单。 不过在实现的过程中也学习到很多以前不知道的东西,下面都会说明,希望大家从中也能学到东西。 原理: 【拖放程序】 基本原理很简单,不知道的看代码就明白,其中参考了越兔和BlueDestiny的相关文章。 下面说一下比较有用的地方: 【范围限制】 首先当然是有拖放范围参数,分别是mxLeft(左边的left最小值)、mxRight(右边的left最大值)、mxTop(上边的top最小值)、mxBottom(下边的top最大值)。 然后在拖动程序Move()中看有没有超过,超过的话设回极限值就行: 复制代码 代码如下:if(this.Limit){ //获取超出长度 var iRight = iLeft + this._obj.offsetWidth - this.mxRight, iBottom = iTop + this._obj.offsetHeight - this.mxBottom; //这里是先设置右边下边再设置左边上边,可能会不准确 if(iRight > 0) iLeft -= iRight; if(iBottom > 0) iTop -= iBottom; if(this.mxLeft > iLeft) iLeft = this.mxLeft; if(this.mxTop > iTop) iTop = this.mxTop; } 【释放选择】 我以前就用的方法是设置ie的onselectstart和ff的MozUserSelect, 但BlueDestiny说“用user-select会相当于event.preventDefault。阻止默认动作就会在某些操作的时候导致mouseup丢失。”, 最好的方法是ie用document.selection.empty(),ff用window.getSelection().removeAllRanges()。 所以可以在Move()中加入: window.getSelection && window.getSelection().removeAllRanges();这种写法是从越兔的程序中学到的。 因为ie的鼠标捕获默认(下面会说)带这个,所以ie就不用了。 【鼠标捕获】 以前不知道js有这个东西,使用很简单: 设置捕获:this.Drag.setCapture(); 取消捕获:this.Drag.releaseCapture()。 它的作用是:将鼠标捕获设置到指定的对象。这个对象会为当前应用程序或整个系统接收所有鼠标输入。 还不明白的话,试试拖放的时候把鼠标拖放到浏览器外面,会发现拖动还在继续, 如果没有这个鼠标捕获就会失效了。 但在浏览器外是触发不了mouseup的,不过还可以用losecapture事件代替: addEventHandler(this.Drag, "losecapture", this._fS); this.Drag.setCapture(); 程序中给ff的window添加blur时停止的事件,越兔说是为了可以检测到alt+tab造成的mouseup丢失,完美一点,也加上去了。 这样一个拖放程序就完成了。

  推荐阅读

  突破winxp sp2/win2003 sp2超强弹窗代码

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]>>>详细阅读


本文标题:JavaScript 图片放大镜(可拖放、缩放效果)第1/4页

地址:http://www.17bianji.com/kaifa2/JS/29410.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)