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 相关文章推荐
popdiv
Jul 14 Javascript
5个最佳的Javascript日期处理类库分享
Apr 15 Javascript
javascript抖动元素的小例子
Oct 28 Javascript
TypeScript 中接口详解
Jun 19 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
Aug 26 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
May 31 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
Dec 30 Javascript
JS左右无缝轮播功能完整实例
May 16 Javascript
详解vue项目中实现图片裁剪功能
Jun 07 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
Sep 06 Javascript
JS如何实现手机端输入验证码效果
May 13 Javascript
vue实现移动端触屏拖拽功能
Aug 21 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创建PDF中文文档
2006/10/09 PHP
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
jQuery Ajax使用 全解析
2010/12/15 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
php中and 和 &amp;&amp;出坑指南
2018/07/13 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
使用Python制作微信跳一跳辅助
2018/01/31 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
公务员爱岗敬业演讲稿
2014/08/26 职场文书
车辆年审委托书范本
2014/09/18 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
旷工辞退通知书
2015/04/17 职场文书
小学运动会前导词
2015/07/20 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL
学习nginx基础知识
2021/09/04 Servers
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis