jQuery放大镜插件
(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放大镜插件的更多相关文章
- Jquery放大镜插件---imgzoom.js(原创)
Jquery放大镜插件imgzoom能够实现图片放大的功能,便于与原图进行比较. 使用方法: 1.引入jQuery与imgzoom,imgzoom.css <link rel="sty ...
- jquery放大镜插件与样式
这是放大镜插件链接,我已经上传到我博客http://files.cnblogs.com/valiant1882331/%E6%94%BE%E5%A4%A7%E9%95%9C%E6%8F%92%E4%B ...
- jQuery放大镜插件jqzoom使用
源码下载,使用指导地址:http://www.mind-projects.it/projects/jqzoom/ 使用教程: 1.导入库文件 <script src="../js/jq ...
- 自己写的jQuery放大镜插件效果(二)(采用只有一张图片的思路)
废话不多说,先看效果图,和上一章节用的是同一个小图片: 这个方法实现的放大有个弊端就是放大倍数设置的过大的话,会带来图片上的模糊.但是图片加载的话要比使用2张图片加载的快很多 插件代码: ; (fun ...
- 自己写的jQuery放大镜插件效果(一)(采用一张大图和一张小图片的思路)
这个思路的方法会带来一个小问题,就是当鼠标放到小图上去时,会开始加载大图片,网速不佳的时候,会出现加载慢的情况.但是放大的效果和你所给出的大图片的清晰度是一样的. 先看效果图: html代码: < ...
- jquery cloudzoom 3.0,magiczoom 放大镜插件 破解 移除版权信息
jquery Cloud Zoom一款放大镜插件.但是无奈 官方下载的始终有版权信息,因此想到如下方法去掉版权信息,测试可行! 官方网址:http://www.starplugins.com/clou ...
- 三、jQuery--jQuery基础--jQuery基础课程--第9章 jQuery 常用插件
1.表单验证插件——validate 该插件自带包含必填.数字.URL在内容的验证规则,即时显示异常信息,此外,还允许自定义验证规则,插件调用方法如下:$(form).validate({option ...
- jquery放大镜效果
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ...
- [原创] JavaScript 图片放大镜插件 enlarge.js 以及移动版 enlarge.touch.js
拖拖拉拉准本了一个月,终于把网站做好了.也终于可以分享这两个插件了.这两个插件,一个是 jQuery 版本,适合鼠标使用的,另一个是原生 JavaScript 制作,适合触摸屏使用(touch 事件) ...
随机推荐
- c#设计模式·结构型模式
看的过程中,发现好多模式都用过,只是没有总结,或者是不知道叫这个名字吧··· 这里列举结构型模式,适配器.桥接.过滤.组合.装饰器.外观.享元.代理, 适配器模式:将现存的对象放到新的环境里边去,但是 ...
- Spring 、SpringMVC 、Struts2之间的区别
一.Spring与SpringMVC的区别: spring是一个开源框架,是为了解决企业应用程序开发,功能如下: 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Ja ...
- hexo的next主题个性化教程:打造炫酷网站
看到有些next主题的网站很炫酷,那么是怎么配置的呢?接下来我会讲一讲如何实现一些炫酷的效果 主要有以下32种: 在右上角或者左上角实现fork me on github 添加RSS 添加动态背景 实 ...
- Codeforces 750 F:New Year and Finding Roots
传送门 首先如果一开始就找到了一个叶子,那么暴力去递归找它的父亲,每次随机一个方向(除了已知的儿子)走深度次,如果走到了一个叶子就不是这个方向 (设根的深度为 \(1\))这样子最后到达深度为 \(3 ...
- BZOJ1396: 识别子串(后缀自动机 线段树)
题意 题目链接 Sol 后缀自动机+线段树 还是考虑通过每个前缀的后缀更新答案,首先出现次数只有一次,说明只有\(right\)集合大小为\(1\)的状态能对答案产生影响 设其结束位置为\(t\),代 ...
- nginx的启动和关闭
nginx的启动和关闭nginx -h 查看帮助信息nginx -v 查看Nginx的版本号nginx -V 显示Nginx的版本号和编译信息start nginx 启动Nginxnginx -s s ...
- ArcGIS for JavaScript继承TiledMapServiceLayer来实现“动态切图”
这种方式可以提高出图速度于效果,算法见http://blog.newnaw.com/?p=633,我用ArcGIS for JavaScript API来实现.具体代码为: function init ...
- create alter rename desc select update delete insert
conn scott/root;create table student (id number(3), name varchar2(10), sex char(2), sno number(3));a ...
- jsoncpp cmake
(1)下载jsoncpp源码源码地址:https://github.com/open-source-parsers/jsoncpp/tree/0.y.z(2)解压源码 unzip jsoncpp-0. ...
- Bootstrap框架。
什么是 Bootstrap Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更 ...