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 相关文章推荐
鼠标移入移出事件改变图片的分辨率的两种方法
Dec 17 Javascript
jQuery实现瀑布流布局
Dec 12 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
Sep 12 Javascript
JS+CSS简单树形菜单实现方法
Sep 12 Javascript
jquery实现全选、反选、获得所有选中的checkbox
Sep 13 Javascript
jQuery添加删除DOM元素方法详解
Jan 18 Javascript
angular中实现li或者某个元素点击变色的两种方法
Jul 27 Javascript
react-native DatePicker日期选择组件的实现代码
Sep 12 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
Jul 05 Javascript
three.js利用卷积法如何实现物体描边效果
Nov 27 Javascript
vuex实现购物车功能
Jun 28 Javascript
微信小程序弹窗禁止页面滚动的实现代码
Dec 30 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打造属于自己的MVC框架
2012/03/07 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
php include类文件超时问题处理
2015/02/06 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
javascript实现日历效果
2019/06/17 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
女大学生毕业找工作的自我评价
2013/10/03 职场文书
回门宴父母答谢词
2014/01/26 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
muduo TcpServer模块源码分析
2022/04/26 Redis