基于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 相关文章推荐
JavaScript实现拼音排序的方法
Nov 20 Javascript
javascript中[]和{}对象使用介绍
Mar 20 Javascript
javascript中2个感叹号的用法实例详解
Sep 04 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
Dec 21 Javascript
JS+canvas画一个圆锥实例代码
Dec 13 Javascript
JavaScript设计模式之构造函数模式实例教程
Jul 02 Javascript
详解vue-cli官方脚手架配置
Jul 20 Javascript
jQuery实现参数自定义的文字跑马灯效果
Aug 15 jQuery
vue-cli3 从搭建到优化的详细步骤
Jan 20 Javascript
js实现无缝滚动双图切换效果
Jul 09 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
Sep 25 Javascript
vue.js实现简单购物车功能
May 30 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
php如何连接sql server
2015/10/16 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
Python循环语句之break与continue的用法
2015/10/14 Python
Python 功能和特点(新手必学)
2015/12/30 Python
python实现实时监控文件的方法
2016/08/26 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
python PIL模块的基本使用
2020/09/29 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
PyQt 如何创建自定义QWidget
2021/03/24 Python
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
Redis性能监控的实现
2021/07/09 Redis
Java 通过手写分布式雪花SnowFlake生成ID方法详解
2022/04/07 Java/Android