发布一款仿天猫产品放大镜JQuery插件
效果如下图:
1、原图
2、放大镜效果:

插件源码如下:
/*
*
* JQUERY 简洁无极放大镜插件-zoomer
* Author:盛世游侠
* QQ:418873053
* Date:2013-11-22
*
*/
(function($) {
$.fn.zoomer = function(o){
o = $.extend({
pic:null,//原图img的容器
leftImg:null,//原图img本身
drag:null,//原图img选看区
bigpic:null,//大图img的容器
box:null,//大图img本身
//img_zoom参数是指放大的倍数,取值范围从1到无穷大,可以取小数。
//img_zoom参数决定了大图长和宽,以及大图显示区域的长和宽。该参数可以自己设置,也可以默认,如果大图与原图不是同一张图,建议默认。
img_zoom:o.box.innerWidth()/o.leftImg.innerWidth()
}, o || {}); o.pic.mouseout(function(){
o.drag.hide();
o.bigpic.hide();
});
//重置大图宽和高,使其与原图成一定比例
o.box.width(o.leftImg.width()*o.img_zoom);
o.box.height(o.leftImg.height()*o.img_zoom);
//原图选看区移动事件函数
o.pic.mousemove(function(e){
o.drag.show();
o.bigpic.show(); //重置大图显示区长和宽与原图的选看区长和宽成一定比例
o.bigpic.width(o.drag.width()*o.img_zoom);
o.bigpic.height(o.drag.height()*o.img_zoom); //原图选看区的实时位置(原图选看区在HTML文档中的实时left和实时top)
var drag_x=e.pageX - o.pic.offset().left-o.drag.innerWidth()/2;
var drag_y=e.pageY -o.pic.offset().top-o.drag.innerHeight()/2; //使原图选看区的实时位置不超出原图的边界
if (drag_x<0){drag_x=0;}
if (drag_x>o.pic.width()-o.drag.width()) {drag_x=o.pic.width()-o.drag.width()};
if (drag_y<0){drag_y=0;}
if (drag_y>o.pic.height()-o.drag.height()) {drag_y=o.pic.height()-o.drag.height()}; //实时设置原图选看区在原图中的位置,这里将jQuery对象转换为了Dom对象然后赋值,所以需要注意drag.style.left要有‘px’单位。
o.drag.get(0).style.left=drag_x+'px';
o.drag.get(0).style.top=drag_y+'px'; //实时设置大图在大图显示区域中的卷动值scrollLeft和scrollTop
o.bigpic.scrollLeft(drag_x*o.img_zoom);
o.bigpic.scrollTop(drag_y*o.img_zoom);
});
};
})(jQuery);
配套的html代码如下:
<div class="showimg">
<div id="bigimg" class="bigimg">
<a href="images/upload/p2_01.gif"><img src="data:images/upload/p2_01.gif" id="leftImg" title="bigimg" /></a>
<div id="drag"><!--放大镜图标--></div>
</div> <div class="bigpic" id="bigpic"><img id='box'src="data:images/upload/p2_01.gif"></div> <div class="litimg">
<a class="hover_a" href="#"><span><b></b></span><img src="data:images/upload/p2_01.gif" /><u></u></a>
<a href="#"><span><b></b></span><img src="data:images/upload/p19_04.gif" /><u></u></a>
<a href="#"><span><b></b></span><img src="data:images/upload/index_17.jpg" /><u></u></a>
</div>
</div>
配套的插件调用代码:
<script type="text/javascript">
/*初始化插件*/
$().zoomer({
pic:$('#bigimg'),
bigpic:$('#bigpic'),
box:$('#box'),
drag:$('#drag'),
leftImg:$('#leftImg')
});
</script>
然后我们给它加上一个点击小图切换对应大图的功能:
<script type="text/javascript"> /*点击小图片切换大图片*/
$(function(){
$('.litimg a').click(function(){
var litsrc = $(this).children('img').attr('src');
$('.showimg #bigimg #leftImg').attr('src',litsrc);
$('.showimg .bigpic #box').attr('src',litsrc);
});
});
</script>
发布一款仿天猫产品放大镜JQuery插件的更多相关文章
- 分享七款视差滚动效果的jQuery 插件
视差(Parallax)是指从不同的点看一个物体时形成的视觉差异,这个名词是源自希腊文的παράλλαξις (parallaxis),意思是”改变”.在网页设计中,视差滚动(Parallax Scr ...
- 推荐15款创建漂亮幻灯片的 jQuery 插件
对于设计师,开发者,摄影师或任何创造性的个人和企业,他们自己的网站是展示他们的技能和服务的最佳场所.你可能打算设计一个新的个人作品网站,不管你是从头开始或使用模板,都会需要使用 jQuery 幻灯片插 ...
- 15 款优化表单的 jQuery 插件
网页上的表单提供给用户的一种交互的方式,用户输入数据,提交到服务器,等待后续的处理.这些表单在我们浏览的网页中随处可见,也容易被我们忽略. 比如,“联系我们”页面会提供一个表单给用户填写他们的信息和想 ...
- Handsontable-一款仿 Excel效果的表格插件使用总结 96
最近在做一个关于报表管理的项目,发现了一款很好用的jQuery插件-Handsontable.它真的特别给力,在 Excel 中可进行的操作,你几乎都可以在网页中做到,如拖动复制.Ctrl+C .Ct ...
- 15款创建美丽幻灯片的 jQuery 插件
1. Skippr Skippr 是一个超级简单的 jQuery 幻灯片插件.仅仅是包含你的网页中引入 jquery.skippr.css 和 jquery.skippr.js 文件就能使用了. Sk ...
- 13款精彩实用的最新jQuery插件
1.jQuery特色菜单 圆形动画菜单插件 jQuery是一个非常流行的WEB前端框架,尽管HTML5非常酷,但是如果HTML5结合jQuery的话就能实现更酷更实用的插件.今天分享的这款jQuery ...
- 2014年25 款最新最棒的jQuery插件
网络上提供了大量非常有用的 jQuery 插件,帮助大家完善网站的体验.所以我们在这里收集了 2014 年发布的,并且是非常有用的插件,希望能帮助大家找到自己需要并且喜欢的,提升网站的质量! HAMM ...
- 16款创建CSS3动画的jQuery插件
jQuery插件是用来扩展jQuery原型对象的方法. 本文搜集了用来为你的站点创建CSS3动画的一些jQuery插件. 1. jQuery Smoove Smoove 简化了CSS3转换效果.使得页 ...
- 图片放大镜——jQuery插件Cloud Zoom
下载地址:cloud_zoom.rar 图片放大镜效果是一种不错的效果,多应用于电子商务.图片展示等网站,给用户带来更好的体验.实现这种效果的代码不少,今天要给大家介绍的是 Cloud Zoom,它是 ...
随机推荐
- 修改一行和修改全表的TX锁
SQL> select * from v$mystat where rownum<2; SID STATISTIC# VALUE ---------- ---------- ------- ...
- 【转】在linux内核中读写文件 -- 不错
原文网址:http://blog.csdn.net/tommy_wxie/article/details/8194276 1. 序曲 在用户态,读写文件可以通过read和write这两个系统调用来完成 ...
- Java中join()方法的理解
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程. 比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B. t.join ...
- HDU 5568 - BestCoder Round #63 - sequence2
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=5568 题意 : 给一个长度已知的序列, 给一个值k, 问该序列中有多少种长度为k的上升子序列 思路 ...
- pip常用命令
以flask为例. 1. 安装 # pip install flask 安装 flask. # pip install flask==1.0 安装 1.0版本的flask # pip install ...
- DHTML【6】--CSS
从今天开始,我们迎来了一个新的面孔---CSS,二者这也是一个漂亮的面孔,为什么说这是一个漂亮的面孔呢?因为CSS是做特效的,可以美化HTML页面,我们看到淘宝网.网易首页等网站都非常好看,那都是一些 ...
- 学习微信小程序之css16常见布局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 树莓派学习笔记——交叉编译练习之SQLite3安装
0.前言 本博文可能并没有太多使用价值.不过为了练习而练习.在树莓派上使用SQLite有非常多的方法,安装的方法也有非常多. [1]假设使用Python,那么不必安装SQLite由于P ...
- uva 317 - Hexagon(规律推导)
题目连接:317 - Hexagon 题目大意:在一个19个六边形组成的图形上玩一个游戏,给出9个数字, 分成3组, 分别可以填在左上角, 上, 有上角,因为对于小六边形来说, 对边的数是相同的, 然 ...
- cocos2d-x 3.6版连连看载入资源
网上找了一个梦幻连连看的资源.大家能够百度一下.然后整理一下加到project里面去.包含声音和图片文件.后面解释怎样整理能够方便管理. 我不推荐在代码里面直接引用资源文件名称,我称之为硬编码. 做i ...