基于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 相关文章推荐
js 页面关闭前的出现提示的实现代码
May 25 Javascript
javascript中直接写php代码的方法
Jul 31 Javascript
jquery动态增加删除表格行的小例子
Nov 14 Javascript
jQuery中toggleClass()方法用法实例
Jan 05 Javascript
.NET微信公众号开发之创建自定义菜单
Jul 16 Javascript
贴近用户体验的Jquery日期、时间选择插件
Aug 19 Javascript
深入解析JavaScript中函数的Currying柯里化
Mar 19 Javascript
Websocket协议详解及简单实例代码
Dec 12 Javascript
详解vue组件开发脚手架
Jun 15 Javascript
vue弹窗组件的实现示例代码
Sep 10 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
Sep 23 Javascript
JavaScript实现随机点名程序
Mar 25 Javascript
幻灯片带网页设计中的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
smarty模板引擎基础知识入门
2015/03/30 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
js 数值项目的格式化函数代码
2010/05/14 Javascript
js 函数的副作用分析
2011/08/23 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
2017/01/04 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python支持多线程的爬虫实例
2019/12/21 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
关于python中的xpath解析定位
2020/03/06 Python
python中取绝对值简单方法总结
2020/07/24 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
2020/10/29 HTML / CSS
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
英国乡村时尚和宠物用品专家:Pet & Country
2018/07/02 全球购物
铁路工务反思材料
2014/02/07 职场文书
会计助理岗位职责
2014/02/17 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
教师读书活动总结
2014/05/07 职场文书
普通党员对照检查材料
2014/08/28 职场文书
意向协议书
2015/01/27 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server