(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. ASP.NET Core 2 学习笔记(十三)Swagger

    Swagger也算是行之有年的API文件生成器,只要在API上使用C#的<summary />文件注解标签,就可以产生精美的线上文件,并且对RESTful API有良好的支持.不仅支持生成 ...

  2. Github的readme.md的排版

    排版格式: 1 标题与文字格式 标题 # 这是 H1 <一级标题> ## 这是 H2 <二级标题> ###### 这是 H6 <六级标题> 文字格式 **这是文字粗 ...

  3. jquery实现复选框全选,全不选,反选中的问题

    今天试了一下用jquery选择复选框,本来以为很简单的东西却有bug,于是搜索了一下找到了解决方法. html代码如下(这里没有用任何样式,就没有再放css了): <html> <h ...

  4. JS实现点击参数面板按钮显示或隐藏数据

    当报表中列出数据太多时,想通过显示按钮隐藏明细数据只显示统计数据.如下图示例,那么该如何实现呢?本文以FineReport为例,来讲述JS如何实现点击参数面板按钮显示或隐藏数据. 打开报表 在参数面板 ...

  5. 在Fragment里面调用getActivity()报null

    看友盟的错误日志发现又出现了NullPointerException,然后去看代码,发现只有是上下文有空的可能,但是因为以前已经发生过这种情况所以上下文我都是在创建Fragment对象的时候从Acti ...

  6. Storm概念

    概念 本文列出了Storm的主要概念及相关的信息链接.讨论到的概念有: Topologies Streams Spouts Bolts Stream groupings Reliability Tas ...

  7. CentOS 中 配置 Nginx 支持 https

    一.基础设置: .yum -y update .yum -y install openssl* .cd /usr/local/nginx/conf .mkdir ./ssl .cd ./ssl # 在 ...

  8. springboot学习网站及博客

    1关于Spring Boot的博客集合https://www.jianshu.com/p/7e2e5e7b32ab 2泥瓦匠BYSocket的Spring Boot系列 https://www.bys ...

  9. leetCode题解 Student Attendance Record I

    1.题目描述 You are given a string representing an attendance record for a student. The record only conta ...

  10. 解决initializing java tooling(1%)

    这是wtp的一个bug,下载附件runtimePatch_327801.zip,解压,放到eclipse下,重启就好了.