原生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 相关文章推荐
javascript中节点的最近的相关节点访问方法
Mar 20 Javascript
jquery实现显示已选用户
Jul 21 Javascript
javascript清空table表格的方法
May 14 Javascript
Javascript实现的SHA-256加密算法完整实例
Feb 02 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
Oct 08 Javascript
让编辑器支持word复制黏贴、截屏的js代码
Oct 17 Javascript
js生成随机颜色方法代码分享(三种)
Dec 29 Javascript
Node.js连接MongoDB数据库产生的问题
Feb 08 Javascript
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
Node.js静态服务器的实现方法
Feb 28 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
Sep 15 Javascript
vue动态绑定style样式
Apr 20 Vue.js
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
杏林同学录(四)
2006/10/09 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
phalcon框架使用指南
2016/02/23 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
Javascript Select操作大集合
2009/05/26 Javascript
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
js定时器实例分享
2016/12/20 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
Python实现二叉堆
2016/02/03 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
基于python监控程序是否关闭
2020/01/14 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
公务员保密承诺书
2014/03/27 职场文书
询价采购方案
2014/06/09 职场文书
施工员岗位职责范本
2015/04/11 职场文书
学校清洁工岗位职责
2015/04/15 职场文书
html5调用摄像头实例代码
2021/06/28 HTML / CSS
JavaScript流程控制(循环)
2021/12/06 Javascript