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 事件) ...
随机推荐
- 解决:java 读取 resources 下面的 json 文件
前言:java 读取 工程下的配置文件,文件类型为 json(*.json),记录一下始终读取不到 json 文件的坑.maven项目 直接上工具类代码 package com.yule.compon ...
- C#设计模式--模板方法模式(学习Learning hard 设计模式笔记)
class Program { static void Main(string[] args) { //创建一个菠菜实例并调用模板方法 Spinach spinach = new Spinach(); ...
- Maven 项目管理从未如此通畅
一,写在前面 Maven到底是什么?它能做些什么?能为我们的开发工作提供什么样的帮助?为什么会有如此大的知名度?另外,常听大厂的人说“私服”,工具管理吧啦吧啦的一堆也是不明觉厉.相信仁者见仁,着智者见 ...
- HTML5 Form Data 对象的使用
HTML5 Form Data 对象的使用 MDN: https://developer.mozilla.org/zh-CN/docs/Web/Guide/Using_FormData_Object ...
- LOJ#6035. 「雅礼集训 2017 Day4」洗衣服
传送门 先处理出每一件衣服最早什么时候洗完,堆+贪心即可 然后同样处理出每件衣服最早什么时候烘干 然后倒序相加取最大值 # include <bits/stdc++.h> using na ...
- 在vue-cli中使用layer中的layData日期组件
有朋友问我怎么在vue-cli项目中使用layui中的layData组件,有时间从网上查了下写下篇文章. 1.首先去layData官网把文件包下载下来,解压出来的laydate文件夹整个放在vue-c ...
- thinkphp3.2 create()
* create作用 * 1.将表单元素中的值和数据库字段意义匹配 * 2.将数据库中没有的字段在数组中去除 if(IS_ ...
- C#防止WebBrowser在新窗口中打开链接页面
在日常的开发中,大家有时需要用WebBrowser加载URL,来实现某些功能.而这时,我们就不希望所打开的页面中的链接,在新窗口中打开,因为这样的话,实际上是用系统默认的浏览器打开了,从而脱离了你的W ...
- 深入理解net core中的依赖注入、Singleton、Scoped、Transient(二)
相关文章: 深入理解net core中的依赖注入.Singleton.Scoped.Transient(一) 深入理解net core中的依赖注入.Singleton.Scoped.Transient ...
- SASS 入门
为什么使用Sass 作为前端(html.javascript.css)的三大马车之一的css,一直以静态语言存在,HTML5火遍大江南北了.javascript由于NODE.JS而成为目前前后端统一开 ...