发布一款仿天猫产品放大镜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,它是 ...
随机推荐
- Quartz与Spring集成 Job如何自动注入Spring容器托管的对象
在Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类和方法可以是普通类.很显然,第二种方式远比第一种方式来的 ...
- js 数字添加逗号,格式化数字
function addCommas(nStr) { nStr += ''; x = nStr.split('.'); x1 = x[0]; x2 = x.length > 1 ? '.' + ...
- OI记忆口诀
splay_rotate: inline void rotate(splay_node *x){ splay_node *y,*z;int d1,d2; d1=get_parent(x,y);//三个 ...
- COJ 0016 20603矩阵链乘
传送门:http://oj.cnuschool.org.cn/oj/home/solution.htm?solutionID=35454 20603矩阵链乘 难度级别:B: 运行时间限制:1000ms ...
- SparkContext自定义扩展textFiles,支持从多个目录中输入文本文件
需求 SparkContext自定义扩展textFiles,支持从多个目录中输入文本文件 扩展 class SparkContext(pyspark.SparkContext): def ...
- oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接)
1.简述 1) 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的.用来连接两张表的表达式组成了连接条件.当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合 ...
- HDOJ(HDU) 2061 Treasure the new start, freshmen!(水题、)
Problem Description background: A new semester comes , and the HDU also meets its 50th birthday. No ...
- Java线程Dump分析工具--jstack【转载】
jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使 ...
- LeetCode (10): Regular Expression Matching [HARD]
https://leetcode.com/problems/regular-expression-matching/ [描述] Implement regular expression matchin ...
- python自动化测试遇到的零零碎碎
1.需求: 提取xx.py中所有的函数名,形成一个类似于索引的参考. 解决方式: grep "def" *.py| awk '{print $2}'|awk -F ':' '{pr ...