基于jquery的放大镜效果


Posted in Javascript onMay 30, 2012

核心代码:

$(function(){ 
var mouseX = 0; //鼠标移动的位置X 
var mouseY = 0; //鼠标移动的位置Y 
var maxLeft = 0; //最右边 
var maxTop = 0; //最下边 
var markLeft = 0; //放大镜移动的左部距离 
var markTop = 0; //放大镜移动的顶部距离 
var perX = 0; //移动的X百分比 
var perY = 0; //移动的Y百分比 
var bigLeft = 0; //大图要移动left的距离 
var bigTop = 0; //大图要移动top的距离 
//改变放大镜的位置 
function updataMark($mark){ 
//通过判断,让小框只能在小图区域中移动 
if(markLeft<0){ 
markLeft = 0; 
}else if(markLeft>maxLeft){ 
markLeft = maxLeft; 
} if(markTop<0){ 
markTop = 0; 
}else if(markTop>maxTop){ 
markTop = maxTop; 
} 
//获取放大镜的移动比例,即这个小框在区域中移动的比例 
perX = markLeft/$(".small").outerWidth(); 
perY = markTop/$(".small").outerHeight(); 
bigLeft = -perX*$(".big").outerWidth(); 
bigTop = -perY*$(".big").outerHeight(); 
//设定小框的位置 
$mark.css({"left":markLeft,"top":markTop,"display":"block"}); 
} 
//改变大图的位置 
function updataBig(){ 
$(".big").css({"display":"block","left":bigLeft,"top":bigTop}); 
} 
//鼠标移出时 
function cancle(){ 
$(".big").css({"display":"none"}); 
$(".mark").css({"display":"none"}); 
} 
//鼠标小图上移动时 
function imgMouseMove(event){ 
var $this = $(this); 
var $mark = $(this).children(".mark"); 
//鼠标在小图的位置 
mouseX = event.pageX-$this.offset().left - $mark.outerWidth()/2; 
mouseY = event.pageY-$this.offset().top - $mark.outerHeight()/2; 
//最大值 
maxLeft =$this.width()- $mark.outerWidth(); 
maxTop =$this.height()- $mark.outerHeight(); 
markLeft = mouseX; 
markTop = mouseY; 
updataMark($mark); 
updataBig(); 
} 
$(".small").bind("mousemove",imgMouseMove).bind("mouseleave",cancle); 
})

这个里面主要有二点

1.如何大图跟随"放大镜"的位置,同时移动大图?

其实就是用到一个比例关系,当“放大镜”移动多少比例(是比例,不是具体值),大图也同时用这个比例去乘以大图的宽和高,就可以算出大图该移动多少距离了;

2.显示区域和放大镜的关系?

这里的“放大镜”应该和大图的显示区域的比例,应该是大图和小的比例关系一样。比如大图和小图的比例是1:2,那个“放大镜”区域的大小,和显示大图区域的大小比例也应该是1:2,不然“放大镜”罩住的小图区域,和大图的显示区域,所显示的图像信息,不能保持一致。(妙味课堂里讲的那个实例,就是没有保持一至);

在线演示:http://demo.3water.com/js/2012/mymagnifier/
打包下载:https://3water.com/jiaoben/45315.html

Javascript 相关文章推荐
图片之间的切换
Jun 26 Javascript
JS 密码强度验证(兼容IE,火狐,谷歌)
Mar 15 Javascript
Js日期选择器并自动加入到输入框中示例代码
Aug 02 Javascript
jQuery实现图片走马灯效果的原理分析
Jan 16 Javascript
JS中多种方式创建对象详解
Mar 22 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
10 种最常见的 Javascript 错误(频率最高)
Feb 08 Javascript
laydate如何根据开始时间或者结束时间限制范围
Nov 15 Javascript
vue + typescript + 极验登录验证的实现方法
Jun 27 Javascript
Node.js实现简单管理系统
Sep 23 Javascript
vue递归获取父元素的元素实例
Aug 07 Javascript
如何理解Vue简单状态管理之store模式
May 15 Vue.js
幻灯片带网页设计中的20个奇妙应用示例小结
May 27 #Javascript
Javascript的常规数组和关联数组对比小结
May 24 #Javascript
基于mootools插件实现遮罩层新手引导
May 24 #Javascript
jQuery 拖动层(在可视区域范围内)
May 24 #Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
May 24 #Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
May 24 #Javascript
js动态在form上插入enctype=multipart/form-data的问题
May 24 #Javascript
You might like
php生成EAN_13标准条形码实例
2013/11/13 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
详解vue表单——小白速看
2018/04/08 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
Python爬虫使用脚本登录Github并查看信息
2018/07/16 Python
python list转矩阵的实例讲解
2018/08/04 Python
PyTorch搭建多项式回归模型(三)
2019/05/22 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
python学生信息管理系统实现代码
2019/12/17 Python
Jupyter加载文件的实现方法
2020/04/14 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
平面设计自荐信
2013/10/07 职场文书
高中英语教学反思
2014/02/04 职场文书
硕士生找工作求职信
2014/07/05 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
光荣之路观后感
2015/06/12 职场文书
亲戚关系证明
2015/06/24 职场文书
运动会800米赞词
2015/07/22 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python