基于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 相关文章推荐
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
Mar 10 Javascript
[原创]来自ImageSee官方 JavaScript图片浏览器
Jan 16 Javascript
jquery autocomplete自动完成插件的的使用方法
Aug 07 Javascript
在Ubuntu上安装最新版本的Node.js
Jul 14 Javascript
告诉你什么是javascript的回调函数
Sep 04 Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
Dec 11 Javascript
webpack配置导致字体图标无法显示的解决方法
Mar 06 Javascript
浅析node.js的模块加载机制
May 25 Javascript
详解vue中router-link标签所必备了解的属性
Apr 15 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
Apr 28 Javascript
完美解决vue 中多个echarts图表自适应的问题
Jul 19 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
浅析php变量修饰符static的使用
2013/06/28 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
浅析PHP开发规范
2018/02/05 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
js实现点赞效果
2020/03/16 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
python 写的一个爬虫程序源码
2016/02/28 Python
python3中rank函数的用法
2019/11/27 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
python pillow库的基础使用教程
2021/01/13 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
大门门卫岗位职责
2013/11/30 职场文书
客服主管岗位职责
2013/12/13 职场文书
出国考察邀请函
2014/01/21 职场文书
会计与出纳自荐书范文
2014/03/16 职场文书
餐饮投资计划书
2014/04/25 职场文书
生态养殖创业计划书
2014/05/06 职场文书
西安大雁塔导游词
2015/02/10 职场文书
撤诉书怎么写
2015/05/19 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
Go语言怎么使用变长参数函数
2022/07/15 Golang