原生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取得iframe中元素的几种方法
Jul 04 Javascript
用Jquery实现滚动新闻
Feb 12 Javascript
js中实现多态采用和继承类似的方法
Aug 22 Javascript
jquery简单实现网页层的展开与收缩效果
Aug 07 Javascript
省市区三级联动下拉框菜单javascript版
Aug 11 Javascript
详解js私有作用域中创建特权方法
Jan 25 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
Sep 06 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
Jul 17 jQuery
浅谈vue+webpack项目调试方法步骤
Sep 11 Javascript
微信小程序dom操作的替代思路实例分析
Dec 06 Javascript
微信小程序自定义单项选择器样式
Jul 25 Javascript
Node.js API详解之 vm模块用法实例分析
May 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/10 PHP
php计算函数执行时间的方法
2015/03/20 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
python实现的文件夹清理程序分享
2014/11/22 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
用Python设计一个经典小游戏
2017/05/15 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
Python实现验证码识别
2020/06/15 Python
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
考试作弊被抓检讨书
2014/01/10 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
合作经营协议书范本
2014/09/16 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
大学生实训报告总结
2014/11/05 职场文书
股东大会通知
2015/04/24 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
Mysql排序的特性详情
2021/11/01 MySQL