原生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 相关文章推荐
基于jquery的一个OutlookBar类,动态创建导航条
Nov 19 Javascript
JQuery 图片滚动轮播示例代码
Mar 24 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
Jun 04 Javascript
javascript表单事件处理方法详解
May 15 Javascript
Easyui使用Dialog行内按钮布局的实例
Jul 27 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
Sep 19 jQuery
浅谈webpack下的AOP式无侵入注入
Nov 12 Javascript
如何在js代码中消灭for循环实例详解
Jul 29 Javascript
VUE写一个简单的表格实例
Aug 06 Javascript
python实现迭代法求方程组的根过程解析
Nov 25 Javascript
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
jquery插件实现悬浮的菜单
Apr 24 jQuery
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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
php基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
jQuery中on方法使用注意事项详解
2017/02/15 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
python利用MethodType绑定方法到类示例代码
2017/08/27 Python
浅谈Python里面小数点精度的控制
2018/07/16 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
Python图像处理库PIL的ImageGrab模块介绍详解
2020/02/26 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
css3中仿放大镜效果的几种方式原理解析
2020/12/03 HTML / CSS
普通PHP程序员笔试题
2016/01/01 面试题
C语言编程题
2015/03/09 面试题
专科毕业生学习生活的自我评价
2013/10/26 职场文书
客服主管岗位职责
2013/12/13 职场文书
公积金单位接收函
2014/01/11 职场文书
民生工程实施方案
2014/03/22 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
班子四风对照检查材料
2014/08/21 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书