最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 20:39:54
文档

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

JavaScript图片放大镜(可拖放、缩放效果)第1/4页_javascript技巧:前些日子突然想做一个透镜效果,就突然想到了这个效果,于是找出当年珍藏的代码决定一尝所愿。 前言:这个程序主要分三部分:层的拖放、层的缩放、图片切割(包括预览)。 其中层的拖放是很常见的效果,层的缩放有点难度,图片切割看着炫其实原理也很简单
推荐度:
导读JavaScript图片放大镜(可拖放、缩放效果)第1/4页_javascript技巧:前些日子突然想做一个透镜效果,就突然想到了这个效果,于是找出当年珍藏的代码决定一尝所愿。 前言:这个程序主要分三部分:层的拖放、层的缩放、图片切割(包括预览)。 其中层的拖放是很常见的效果,层的缩放有点难度,图片切割看着炫其实原理也很简单


前些日子突然想做一个透镜效果,就突然想到了这个效果,于是找出当年“珍藏”的代码决定一尝所愿。
前言:
这个程序主要分三部分:层的拖放、层的缩放、图片切割(包括预览)。
其中层的拖放是很常见的效果,层的缩放有点难度,图片切割看着炫其实原理也很简单。
不过在实现的过程中也学习到很多以前不知道的东西,下面都会说明,希望大家从中也能学到东西。
原理:

【拖放程序】

基本原理很简单,不知道的看代码就明白,其中参考了越兔和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丢失,完美一点,也加上去了。

这样一个拖放程序就完成了。

文档

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

JavaScript图片放大镜(可拖放、缩放效果)第1/4页_javascript技巧:前些日子突然想做一个透镜效果,就突然想到了这个效果,于是找出当年珍藏的代码决定一尝所愿。 前言:这个程序主要分三部分:层的拖放、层的缩放、图片切割(包括预览)。 其中层的拖放是很常见的效果,层的缩放有点难度,图片切割看着炫其实原理也很简单
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top