原生js写的放大镜效果


Posted in Javascript onAugust 22, 2012

我的大体思路是:时时监听鼠标的坐标,当鼠标移动时,透明层随着鼠标移动,大图片相对透明层的移动而移动。不废话了,看代码。

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>放大镜</title> 
<meta name="Keywords" content=""> 
<meta name="Description" content=""> 
<style type="text/css"> 
/*重置{*/ 
html{color:#000;background:#fff;} 
body,div{padding:0;margin:0;} 
img{border:none;} 
/*}重置*/ 
.outer{width:200px;height:150px;position:relative;margin:20px auto;} 
.inner{width:80px;height:60px;background:#f55;position:absolute;opacity:0.5;filter:alpha(opacity=50);left:0;top:0;cursor:pointer;} 
.aa{width:320px;height:240px;position:relative;border:1px red solid;margin:20px auto;overflow:hidden;} 
.imgs{position:absolute;} 
.outer img{width:200px;height:150px;} 
</style> 
</head> 
<body> 
<div> 
<div class="outer" id="outer"> 
<img src="images/pobabyb.gif" alt="pobaby小图"/> 
<div class="inner" id="inner"></div> 
</div> 
<div class="aa" id="aa"> 
<div class="imgs" id="imgs" ><img src="images/pobabyb.gif" alt="pobaby大图"/></div> 
</div> 
</div> 
<script type="text/javascript"> 
var outer=document.getElementById("outer"); 
var inner=document.getElementById("inner"); 
var aa=document.getElementById("aa"); 
var imgs=document.getElementById("imgs"); 
var x,y,n=false; 
inner.onmousedown=test1;//如果把inner改为document,鼠标在窗口任意位置点击,图片都会跟随 
document.onmousemove=test2;//document如果改为outer,鼠标在outer内才起作用 
document.onmouseup=test3; 
function test1(event){//鼠标按下时方法 
var event=event || window.event;//调试兼容,各个浏览器认识event有差别. 
n=true;//当n=true(n的值可随便设定)时,假定为鼠标按下的事件 
x=event.clientX-inner.offsetLeft;//鼠标在透明层的相对横坐标=鼠标坐标-方块左边距 
y=event.clientY-inner.offsetTop;//鼠标在透明层的相对纵坐标=鼠标坐标-方块上边距 
} 
function test2(event){//鼠标移动时方法 
var event=event || window.event; 
if(n==true){ 
////////鼠标移动范围 
inner.style.left=event.clientX-x+"px"; 
inner.style.top=event.clientY-y+"px"; 
////////图片移动范围 
imgs.style.left=-4*parseInt(inner.style.left)+"px"; 
imgs.style.top=-4*parseInt(inner.style.top)+"px"; 
////////////////////////////限定鼠标移动的范围 
if(parseInt(inner.style.left)<0){ 
inner.style.left=0+"px"; 
} 
if(parseInt(inner.style.top)<0){ 
inner.style.top=0+"px"; 
} 
if(parseInt(inner.style.left)>outer.clientWidth-inner.clientWidth){ 
inner.style.left=outer.clientWidth-inner.clientWidth+"px"; 
} 
if(parseInt(inner.style.top)>outer.clientHeight-inner.clientHeight){ 
inner.style.top=outer.clientHeight-inner.clientHeight+"px"; 
} 
//////////////////////////////限定图片移动的范围 
if(parseInt(imgs.style.left)>0){ 
imgs.style.left=0+"px"; 
} 
if(parseInt(imgs.style.top)>0){ 
imgs.style.top=0+"px"; 
} 
if(parseInt(imgs.style.left)<-4*(outer.clientWidth-inner.clientWidth)){ 
imgs.style.left=-4*parseInt(outer.clientWidth-inner.clientWidth)+"px"; 
} 
if(parseInt(imgs.style.top)<-4*(outer.clientHeight-inner.clientHeight)){ 
imgs.style.top=-4*parseInt(outer.clientHeight-inner.clientHeight)+"px"; 
} 
} 
} 
function test3(){//鼠标松开时方法 
n=false; 
} 
</script> 
</body> 
</html>

原生js写的放大镜效果
Javascript 相关文章推荐
非常不错的功能强大代码简单的管理菜单美化版
Jul 09 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
Feb 07 Javascript
JQuery 选择器、过滤器介绍
Feb 14 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
Apr 05 Javascript
js面向对象 多种创建对象方法小结
May 21 Javascript
Javascript遍历table中的元素示例代码
Jul 08 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
Jan 07 Javascript
javascript加减乘除的简单实例
Jul 12 Javascript
jQuery、zepto、js常用小技巧
Feb 12 Javascript
D3.js进阶系列之CSV表格文件的读取详解
Jun 06 Javascript
jQuery实现合并表格单元格中相同行操作示例
Jan 28 jQuery
seajs和requirejs模块化简单案例分析
Aug 26 Javascript
window.open不被拦截的实现代码
Aug 22 #Javascript
EASYUI TREEGRID异步加载数据实现方法
Aug 22 #Javascript
网页打开自动最大化的js代码
Aug 22 #Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
Aug 22 #Javascript
eval的两组性能测试数据
Aug 17 #Javascript
javascript五图轮播切换实用版
Aug 17 #Javascript
JS左右无缝滚动(一般方法+面向对象方法)
Aug 17 #Javascript
You might like
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
YII中assets的使用示例
2014/07/31 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
javascript基本语法
2016/05/31 Javascript
原生js开发的日历插件
2017/02/04 Javascript
vuejs如何配置less
2017/04/25 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
2018/05/06 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
python3 模拟登录v2ex实例讲解
2017/07/13 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
关于Numpy中的行向量和列向量详解
2019/11/30 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
生态学毕业生自荐信
2013/10/27 职场文书
美术教师个人工作总结
2015/02/06 职场文书
升学宴家长致辞
2015/07/27 职场文书
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers