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 相关文章推荐
jquery 表单进行客户端验证demo
Aug 24 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
Aug 14 Javascript
js事件冒泡实例分享(已测试)
Apr 23 Javascript
jQuery实现冻结表格行和列
Apr 29 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
Sep 06 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
JS实现的适合做faq或menu滑动效果示例
Nov 17 Javascript
浅谈ElementUI中switch回调函数change的参数问题
Aug 24 Javascript
vue项目设置scrollTop不起作用(总结)
Dec 21 Javascript
微信小程序在text文本实现多种字体样式
Nov 08 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
Apr 27 Javascript
Vue如何实现监听组件原生事件
Jul 03 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实现等比压缩图片大小
2016/03/04 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
非常好的js代码
2006/06/27 Javascript
js分解url参数(面向对象-极简主义法应用)
2012/08/09 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
Python 随机生成中文验证码的实例代码
2013/03/20 Python
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
python 阶乘累加和的实例
2019/02/01 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
python scatter函数用法实例详解
2020/02/11 Python
Python类的动态绑定实现原理
2020/03/21 Python
基于python实现FTP文件上传与下载操作(ftp&amp;sftp协议)
2020/04/01 Python
python 制作本地应用搜索工具
2021/02/27 Python
linux面试题参考答案(5)
2016/11/05 面试题
软件设计的目标是什么
2016/12/04 面试题
采购内勤岗位职责
2013/12/10 职场文书
适用于所有创业者的创业计划书
2014/02/05 职场文书
标准化管理实施方案
2014/02/25 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
党员作风建设自查报告
2014/10/23 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书