(function($) {
$.fn.magnifier = function(options){
var options = $.extend({
bigWidth: 400, //大图高度
bigHeight: 400, //大图高度
offset: 10, //大图与小图之间的偏移
condition: true
},options);
return this.each(function(){
var self = $(this);
if(options.condition === true){
self.mouseenter(function(){
var imageLeft = $(this).offset().left; //图片距离左边距离
var imageTop = $(this).offset().top; //图片距离上边距离
var imageWidth = $(this).outerWidth(); //图片宽度
var imageHeight = $(this).outerHeight(); //图片高度
var boxLeft = $(this).parent().offset().left; //外层容器距离左边距离
var boxTop = $(this).parent().offset().top; //外层容器距离上边距离
var boxWidth = $(this).parent().width(); //外层容器宽度
var boxHeight = $(this).parent().height(); //外层容器高度
var bigImage = $(this).attr("rel"); //获取大图链接
$("#bigDiv").remove(); //开头清除大图
$("#zoomDiv").remove(); //开头清除放大镜
//生成大图及放大镜
$(document.body).append("<div id='bigDiv'><img class='bigImg' src='" + bigImage + "'/></div><div id='zoomDiv'></div>");
//赋值大图属性
$("#bigDiv").css({
top : boxTop,
left : boxLeft + boxWidth + options.offset, //外层容器左边距离+外层容器宽度+偏移
width : options.bigWidth,
height : options.bigHeight
});
$("#bigDiv").show(); //显示大图容器
$(document.body).mousemove(function(e) {
if(e.pageX < imageLeft || e.pageX > imageLeft + imageWidth || e.pageY < imageTop || e.pageY > imageTop + imageHeight) {
$(document.body).unbind("mousemove");
$("#zoomDiv").remove();
$("#bigDiv").remove();
return false;
}
var bigwidth = $("#bigDiv").find(".bigImg").outerWidth(); //大图宽度
var bigheight = $("#bigDiv").find(".bigImg").outerHeight(); //大图高度
var scalex = bigwidth / imageWidth; //大图宽度 / 小图宽度
var scaley = bigheight / imageHeight; //大图高度 / 小图高度
//动态计算放大镜位置
var xpos = (e.pageX - $("#zoomDiv").width() / 2 < imageLeft) ? imageLeft : (e.pageX + $("#zoomDiv").width() / 2 > imageWidth + imageLeft) ? (imageWidth + imageLeft - $("#zoomDiv").width()) : (e.pageX - $("#zoomDiv").width() / 2);
var ypos = (e.pageY - $("#zoomDiv").height() / 2 < imageTop) ? imageTop : (e.pageY + $("#zoomDiv").height() / 2 > imageHeight + imageTop) ? (imageHeight + imageTop - $("#zoomDiv").height()) : (e.pageY - $("#zoomDiv").height() / 2);
//动态赋值放大镜属性
$("#zoomDiv").css({
top : ypos,
left : xpos,
width : options.bigWidth / scalex,
height: options.bigHeight / scaley
});
//动态计算大图位置
var xposs = e.pageX - $("#zoomDiv").width() / 2 - imageLeft;
var yposs = e.pageY - $("#zoomDiv").height() / 2 - imageTop;
//动态赋值大图scroll
$("#bigDiv").scrollLeft(xposs*scalex).scrollTop(yposs*scaley);
});
});
}
else{
self.mouseenter(function(){
$("#bigDiv").remove();
$("#zoomDiv").remove();
});
}
});
}
})(jQuery);
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
img{vertical-align: top;}
#box{margin: 100px auto;display: table;position: relative;height: 300px;border: 1px solid red;}
#bigDiv{z-index:999;position:absolute;top:0px;left:0px;width:200px;height:200px;background:#ffffff;border:1px solid #CCCCCC;display:none;text-align:center;overflow:hidden;}
#zoomDiv{position:absolute;background:url("mask.png") repeat scroll 0 0 transparent;cursor:move;z-index:1;}
</style>
</head>
<body>
<div id="box">
<div style="display: table-cell; vertical-align: middle;">
<img src="01_mid.jpg" rel="01.jpg" class="jqzoom2" />
</div>
</div>
<script src="../jquery.min.js"></script>
<script src="jqzoom.js"></script>
<script>
function tj(){
if($(window).width()>=1000){
$(".jqzoom2").magnifier();
}else{
$(".jqzoom2").magnifier({condition:false});
}
}
tj();
$(window).resize(function(){
tj();
});
</script>
</body>
</html>

根据项目需求,响应式的情况下是否调用放大镜,写的一个简易jQuery插件。

jQuery放大镜插件的更多相关文章

  1. Jquery放大镜插件---imgzoom.js(原创)

    Jquery放大镜插件imgzoom能够实现图片放大的功能,便于与原图进行比较. 使用方法: 1.引入jQuery与imgzoom,imgzoom.css <link rel="sty ...

  2. jquery放大镜插件与样式

    这是放大镜插件链接,我已经上传到我博客http://files.cnblogs.com/valiant1882331/%E6%94%BE%E5%A4%A7%E9%95%9C%E6%8F%92%E4%B ...

  3. jQuery放大镜插件jqzoom使用

    源码下载,使用指导地址:http://www.mind-projects.it/projects/jqzoom/ 使用教程: 1.导入库文件 <script src="../js/jq ...

  4. 自己写的jQuery放大镜插件效果(二)(采用只有一张图片的思路)

    废话不多说,先看效果图,和上一章节用的是同一个小图片: 这个方法实现的放大有个弊端就是放大倍数设置的过大的话,会带来图片上的模糊.但是图片加载的话要比使用2张图片加载的快很多 插件代码: ; (fun ...

  5. 自己写的jQuery放大镜插件效果(一)(采用一张大图和一张小图片的思路)

    这个思路的方法会带来一个小问题,就是当鼠标放到小图上去时,会开始加载大图片,网速不佳的时候,会出现加载慢的情况.但是放大的效果和你所给出的大图片的清晰度是一样的. 先看效果图: html代码: < ...

  6. jquery cloudzoom 3.0,magiczoom 放大镜插件 破解 移除版权信息

    jquery Cloud Zoom一款放大镜插件.但是无奈 官方下载的始终有版权信息,因此想到如下方法去掉版权信息,测试可行! 官方网址:http://www.starplugins.com/clou ...

  7. 三、jQuery--jQuery基础--jQuery基础课程--第9章 jQuery 常用插件

    1.表单验证插件——validate 该插件自带包含必填.数字.URL在内容的验证规则,即时显示异常信息,此外,还允许自定义验证规则,插件调用方法如下:$(form).validate({option ...

  8. jquery放大镜效果

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ...

  9. [原创] JavaScript 图片放大镜插件 enlarge.js 以及移动版 enlarge.touch.js

    拖拖拉拉准本了一个月,终于把网站做好了.也终于可以分享这两个插件了.这两个插件,一个是 jQuery 版本,适合鼠标使用的,另一个是原生 JavaScript 制作,适合触摸屏使用(touch 事件) ...

随机推荐

  1. K:红黑树

      红黑树由AVL树改进而来,红黑树与AVL都是平衡结构的树.对于AVL树,其每次插入操作都需要从根节点处开始判断该树是否失去平衡,从而做出相应的调整.且其调整过程较为麻烦,每次都需要判断其左右两棵子 ...

  2. AutoFac使用方法总结四:生命周期续

         控制反转(IoC/Inverse Of Control):   调用者不再创建被调用者的实例,由autofac框架实现(容器创建)所以称为控制反转.      依赖注入(DI/Depende ...

  3. Oracle用户权限及死锁

    Oracle用户权限表 oracle数据库中涉及到用户权限的三个表,dba_users,all_users,user_users有什么区别 dba_开头的是查全库所有的,all_开头的是查当前用户可以 ...

  4. Android下用程序的方法为ListView设置分割线Divider样式

    使用XML的时候可以使用android:divider属性为ListView设置分割线的样式(颜色或者资源文件),而在Java代码中默认提供的方法 listView.setDivider() 却只支持 ...

  5. 从敲入 URL 到浏览器渲染完成、对HTTP协议的理解

    1. 大致过程 当你这样子回答的时候: 用户输入 url 地址,浏览器查询 DNS 查找对应的请求 IP 地址 建立 TCP 连接 浏览器向服务器发送 http 请求,如果服务器段返回以 301 之类 ...

  6. 使用Python生成基础验证码教程

    pillow是Python平台事实上的图像处理标准库.PIL功能非常强大,但API却非常简单易用. 所以我们使用它在环境里做图像的处理. 第一步 下载pillow #运行命令 pip install ...

  7. 搭建本地svn

      1. 下载并安装TortoiseSVN,下载地址为:http://tortoisesvn.net/downloads.html.        2. 在本地创建一个文件夹,作为SVN服务的文件夹. ...

  8. vue2.0 element-ui中input的@keyup.native.enter='onQuery'回车查询刷新整个表单的解决办法

    项目中用的element-ui是v1.4.3版本 实现的功能是在input中输入查询的名称,按下键盘回车键,可以查询表格中数据 问题是,我输入名称,按下回车,会整个表单刷新,搜索条件也被清空:代码如下 ...

  9. maven学习知识点汇总

    1. 2.maven自动建立目录骨架 首先进入目录结构:  PS C:\WINDOWS\system32> cd C:\Users\10563\Desktop\test 然后输入自动构建命令:  ...

  10. 用localStorage来存储数据的一些经验

    localStorage: 是一种你不主动清除它,它会一直将存储数据存储在客户端的存储方式,即使你关闭了客户端(浏览器),属于本地持久层储存 sessionStorage: 用于本地存储一个会话(se ...