jQuery chili图片远处放大插件

zrs3315

zrs3315

2016-02-19 14:44

想要天天向上,就要懂得享受学习。图老师为大家推荐jQuery chili图片远处放大插件,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

为了让本地图片、远程图片、过小的图片都适应此插件,有很多细节问题要处理。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

首先定义结构:

 div class="imgMagnifierWrap" div class="overlay"!--覆盖层,鼠标的感应区域,位于小图上最方--/div div class="tipboxHover"!--小图上方的悬停提示方框--/div div class="imgOriginal"!--装载大图的容器,绝对定位img src="bigOne.jpg" /!--前景大图,绝对定位--/div /div
 !--样式-- style type="text/css" .imgMagnifierWrap *{position:absolute;background:#fff;} .imgMagnifierWrap .tipboxHover{width:80px; height:60px; filter:alpha(opacity=30);opacity:.3;display:none;} .imgMagnifierWrap .imgOriginal{display:none;z-index:9999;overflow:hidden; width:400px; height:400px; background-color:#cdf; background-repeat:no-repeat; text-align:center;border:1px solid #555; } .imgMagnifierWrap .overlay{cursor:crosshair;filter:alpha(opacity=0);opacity:0;} style

然后考虑图片预加载:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)
 $.imgPreloader=function(url,eventLists){ var img=new Image(); var $img=$(img); img.src=url; $.each(eventLists,function(type,fn){ $img.bind(type,fn); }); $img.trigger(img.complete?'load':'begin'); return $img; };

再计算感应区域: 小图所处感应区域四边各减去指示方框各四边的1/2大小的矩形,在此之外的区域则显示到大图边界:

 var borderLeft =thumbInfo.left+tipboxInfo.width/2; var ratioX=(mouseInfo.x-borderLeft)/(thumbInfo.width-tipboxInfo.width);

用大图用做背景图片引发的问题: 用隐藏的前景图片预加载,load事件判断时机,ie,chrome正常,ff请求了两次图片,图片未缓存; 换一种方式,不预载大图。改成直接在大图位置用覆盖层做“loading”后,chrome下表现为渐进加载图片,非chrome是直接显示,略有遗憾。 最终结果,把大图用做前景图片: 优势在于,大图的load和error事件都可以正常工作:

 $.imgPreloader($anchor.attr('href'),{ load:function(){ isImageReady=true; $o.empty().append(this); setTimeout(autoFitPicture,0); }, begin:function(){ $o.text('loading...'); }, error:function(){ isImageReady=true; $o.text('invalid picture!'); } });

大图预载的load事件和小图mousemove事件不同步的解决办法:实时存储鼠标坐标,把提示方框定位和大图定位的方法分离。

   //鼠标位置存储 var mouseInfo={x:0,y:0}; //指示框定位 var setTipboxPosition=function(e){ mouseInfo.x=e.pageX; mouseInfo.y=e.pageY; $tipbox.css({ top:mouseInfo.ythumbInfo.width/2+thumbInfo.top ?Math.max(mouseInfo.y-tipboxInfo.height/2,thumbInfo.top) :Math.min(mouseInfo.y-tipboxInfo.height/2,thumbInfo.top+thumbInfo.height-tipboxInfo.height), left:mouseInfo.xthumbInfo.width/2+thumbInfo.left ?Math.max(mouseInfo.x-tipboxInfo.width/2,thumbInfo.left) :Math.min(mouseInfo.x-tipboxInfo.width/2,thumbInfo.left+thumbInfo.width-tipboxInfo.width) });   setImgPosition(); };

随便一提,如果有一种浏览器,也许会很幸运。

展开更多 50%)
分享

猜你喜欢

jQuery chili图片远处放大插件

Web开发
jQuery chili图片远处放大插件

收集国外的14个图片放大编辑的jQuery插件

Web开发
收集国外的14个图片放大编辑的jQuery插件

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

jquery.lazyload 实现图片延迟加载jquery插件

Web开发
jquery.lazyload  实现图片延迟加载jquery插件

jquery 简单图片导航插件jquery.imgNav.js

Web开发
jquery 简单图片导航插件jquery.imgNav.js

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Webjx收集jQuery图片切换效果插件

Web开发
Webjx收集jQuery图片切换效果插件

Lazy Load 延迟加载图片的 jQuery 插件

Web开发
Lazy Load 延迟加载图片的 jQuery 插件

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

解决不能通过mysql.sock连接MySQL问题

解决不能通过mysql.sock连接MySQL问题

装完win7系统怎么给C盘减减肥

装完win7系统怎么给C盘减减肥
下拉加载更多内容 ↓