发布一款仿天猫产品放大镜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,它是 ...
随机推荐
- 【Git】Git教程
http://www.liaoxuefeng.com/
- MYSQL主从同步测试
参考: http://www.cnblogs.com/zgx/archive/2011/09/13/2174823.html 注意选建同步用户,其它的都按步就搬. 还有,不要让IPTABLES坏事,开 ...
- VS2012 利用正则统计项目代码行数
原文:VS2012 利用正则统计项目代码行数 #开头和/开头或者空行都不计入代码量, 搜索出来以后最后一行就是代码行数了:
- BZOJ 1007 [HNOI2008]水平可见直线
1007: [HNOI2008]水平可见直线 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4453 Solved: 1636[Submit][Sta ...
- HDU 1083 Courses(最大匹配模版题)
题目大意: 一共有N个学生跟P门课程,一个学生可以任意选一 门或多门课,问是否达成: 1.每个学生选的都是不同的课(即不能有两个学生选同一门课) 2.每门课都有一个代表(即P门课都被成功选过 ...
- Python HiveServer2
1. 安装pyhs2 pyhs2依赖项如下: gcc-c++ python-devel.x86_64 cyrus-sasl-devel.x86_64 因此pyhs2的安装命令如下: ...
- Objective-C中变量采用@property的各个属性值的含义
我们在OC中定义变量,可以自己来定义变量的setter方法来设置变量值,用getter方法来获取变量值.但是当变量数量增多时,还采用手动添加setter/getter方法来操作变量,就会使得程序代码量 ...
- [置顶] 软件架构师的12项修炼_读书纪要_P3商务技能修炼
本系列的文章是我读书后的个人纪要(书摘),仅代表个人观点.如想了解更多相关内容,请购买正版物,支持原书作者.对应的图书可以从我的个人图书列表里找寻:个人毕业后图书列表 本书勾勒了软件架构师的必备技能的 ...
- (转)Maven实战(六)依赖
我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可. 1. 依赖配置 依赖可以声明如下: <project> ... <dependenci ...
- 窥探 Swift 之 函数与闭包的应用实例
今天的博客算是比较基础的,还是那句话,基础这东西在什么时候 都是最重要的.说到函数,只要是写过程序就肯定知道函数是怎么回事,今天就来讨论一下Swift中的函数的特性以及Swift中的闭包.今天的一些小 ...