jQuery chili图片远处放大插件

2016-02-19 14:44 19 1 收藏

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

【 tulaoshi.com - Web开发 】

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

首先定义结构:

(本文来源于图老师网站,更多请访问https://www.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://www.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(); };

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

来源:https://www.tulaoshi.com/n/20160219/1607746.html

延伸阅读
标签: Web开发
简化后的插件: SimplePlugin.htm: 代码如下: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" html xmlns="http://www.w3.org/1999/xhtml" head title简化后的插件/title script type="text/ecmascript" src="../js/jquery-1.2.6.js"/script script ty...
标签: Web开发
和大家分享一下代码: JavaScript代码 代码如下: //得到select项的个数 jQuery.fn.size = function() { return jQuery(this).get(0).options.length; } //获得选中项的索引 jQuery.fn.getSelectedIndex = function() { return jQuery(this).get(0).selectedIndex; } //获得当前选中项的文本 jQuery.fn.getSelectedText = funct...
标签: Web开发
先来看看使用方法。 演示地址 http://demo.jb51.net/js/jCutter_jquery/demo.htm HTML文件中这样写: 代码如下: div img src="1.jpg" alt="" div 这是点开后的页面的内容 /div /div 调用的话需要这样写: 代码如下: $(document).ready(function(){ options={ 'speedIn':600, //图片进入时候的动画速度 'speedOu...
标签: Web开发
在网络发展领域,由于 jQuery 简单易学,易于使用和易于扩展的特点,因此正慢慢变得无处不在。以下是从一些 jQuery 相关文章中整理出来的 30+ 新鲜与惊奇的 jQuery 插件与教程。如果你正在寻找最新的 jQuery 信息,这些内容值得一读。 教程 1. 在图像画廊载入过程中使用 jQuery 预加载技术。 | 2. 创建一个独特的熔岩灯动画效果的 j...

经验教程

324

收藏

44
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部