原生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 ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
Mar 27 Javascript
仿新浪微博返回顶部的jquery实现代码
Oct 01 Javascript
Jquery Ajax xmlhttp请求成功问题
Feb 04 Javascript
kindeditor修复会替换script内容的问题
Apr 03 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
May 25 Javascript
简单了解JavaScript操作XPath的一些基本方法
Jun 03 Javascript
原生js实现回复评论功能
Jan 18 Javascript
JS简单实现数组去重的方法分析
Oct 14 Javascript
基于input动态模糊查询的实现方法
Dec 12 Javascript
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 jQuery
通过微信公众平台获取公众号文章的方法示例
Dec 25 Javascript
React 条件渲染最佳实践小结(7种)
Sep 27 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
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
解决phantomjs截图失败,phantom.exit位置的问题
2018/05/17 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
Python 面试中 8 个必考问题
2018/11/16 Python
Django Celery异步任务队列的实现
2019/07/24 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
军训自我鉴定200字
2014/02/13 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
全国文明单位申报材料
2014/05/31 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
大学生团员个人总结
2015/02/14 职场文书
教师培训简讯
2015/07/20 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
python实现简单聊天功能
2021/07/07 Python
HTML+CSS实现导航条下拉菜单的示例代码
2021/08/02 HTML / CSS
工厂无线对讲系统解决方案
2022/02/18 无线电