javascript放大镜效果的简单实现


Posted in Javascript onDecember 09, 2013

这个效果并不难,要点是位置和比例设置,

捕获鼠标位置、判断鼠标位置区域、还有onmouseover事件、onmousemove事件、onmouseout事件

设置显示大图的比例,小图上显示的切图比例都要弄准确点,最好是2倍啦,4倍啦。

主要注意宽度,我这里的图片m.jpg是1440X900的....

<!DOCTYPE html PUBLIC "-//W3C//DTD Xhtml 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>放大镜效果</title>
<style type="text/css">
*{margin:0;padding:0;}
#smallimg{width:360px;float:left;position:relative;border:1px solid red;}
#smallimg img{ width:360px;}
#bigimg{float:left;width:400px;height:400px;margin-left:40px;border:1px solid #ccc;display:none;}
#showimg{width:100px;height:100px;background:#fff;cursor:move; position:absolute;border:1px solid #666;opacity:0.5;filter:alpha(opacity=50);display:none;}
</style>
</head>
<body>
<div id="smallimg">
 <img src="jq/m.jpg" alt=""/>
 <div id="showimg"> </div>
</div>
<div id="bigimg"> </div>

<script type="text/javascript">
var $=function(id){return typeof id=="string"?document.getElementById(id):id}
var smallimg = $("smallimg");
var showimg = $("showimg");//滤镜图片
var bigimg = $("bigimg");
var small_url = smallimg.getElementsByTagName("img")[0].getAttribute("src");
var show_half = maxWidth = maxHeight = 0;
smallimg.onmouseover = function(){
 showimg.style.display = "block";
 bigimg.style.display = "inline";
 show_half = showimg.offsetHeight/2;
 maxWidth = smallimg.clientWidth - showimg.offsetWidth;
 maxHeight = smallimg.clientHeight - showimg.offsetHeight;
 //上面两个变量指明showimg允许活动的区域
};
smallimg.onmousemove = function(e){
 var e=window.event?window.event:e;
 var num=bigimg.clientWidth/showimg.clientWidth;
 var Top = e.clientY - smallimg.offsetTop - show_half;
 var Left = e.clientX - smallimg.offsetLeft - show_half;
 //获取当前移动的showimg位置 计算方法是 鼠标坐标 - 最外面容器的坐标 - 盒子的宽(高)的/2 
 Top = Top<0?0:Top>maxHeight?maxHeight:Top;
 Left = Left<0?0:Left>maxWidth?maxWidth:Left;
 showimg.style.top = Top + "px";
 showimg.style.left = Left + "px";
 bigimg.style.background = "url("+small_url+") -"+Left*num+"px -"+Top*num+"px no-repeat";
};
smallimg.onmouseout = function(){
 showimg.style.display="none";
 bigimg.style.background ="";
 bigimg.style.display="none"
};
</script>
</body>
</html>
Javascript 相关文章推荐
解决iframe的frameborder在chrome/ff/ie下的差异
Aug 12 Javascript
Iframe 自动适应页面的高度示例代码
Feb 26 Javascript
java和javascript获取word文档的书签位置对比
Jun 19 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
Jun 18 Javascript
RequireJS简易绘图程序开发
Oct 28 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
Apr 03 jQuery
基于webpack4.X从零搭建React脚手架的方法步骤
Dec 23 Javascript
ES6知识点整理之模块化的应用详解
Apr 15 Javascript
vue项目打包后怎样优雅的解决跨域
May 26 Javascript
vue实现分页加载效果
Dec 24 Javascript
npm ci命令的基本使用方法
Sep 20 Javascript
js实现网页随机验证码
Oct 19 Javascript
javascript贪吃蛇完整版(源码)
Dec 09 #Javascript
关于js内存泄露的一个好例子
Dec 09 #Javascript
JS连连看源码完美注释版(推荐)
Dec 09 #Javascript
解析Javascript中难以理解的11个问题
Dec 09 #Javascript
深入理解Javascript作用域与变量提升
Dec 09 #Javascript
Javascript全局变量var与不var的区别深入解析
Dec 09 #Javascript
jquery div拖动效果示例代码
Dec 08 #Javascript
You might like
用php+mysql一个名片库程序
2006/10/09 PHP
php产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
AngularJS实现表单元素值绑定操作示例
2017/10/11 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
js中数组常用方法总结(推荐)
2019/04/09 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
python 正则式使用心得
2009/05/07 Python
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
pytest中文文档之编写断言
2019/09/12 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
《手指教学》反思
2014/02/14 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
网络研修心得体会
2016/01/08 职场文书
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL