原生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 相关文章推荐
使用js简单实现了tree树菜单
Nov 20 Javascript
javascript中的throttle和debounce浅析
Jun 06 Javascript
JavaScript判断FileUpload控件上传文件类型
Sep 28 Javascript
AngularJS 避繁就简的路由
Jul 01 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
Dec 22 Javascript
Vue数组更新及过滤排序功能
Aug 10 Javascript
Bootstrap 3多级下拉菜单实例
Nov 23 Javascript
vue项目常用组件和框架结构介绍
Dec 24 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
Jul 10 Javascript
JavaScript中arguments和this对象用法分析
Aug 08 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 Javascript
vue中将html字符串转换成html后遇到的问题小结
Dec 10 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
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
JSON 学习之完全手册 图文
2007/05/29 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
详解vue-property-decorator使用手册
2019/07/29 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
python游戏开发的五个案例分享
2020/03/09 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
python Timer 类使用介绍
2020/12/28 Python
酒店办公室文员岗位职责
2013/12/18 职场文书
关于赌博的检讨书
2014/01/24 职场文书
医药销售求职信范文
2014/02/01 职场文书
2014年基层党组织公开承诺书
2014/03/29 职场文书
小学假期安全广播稿
2014/09/28 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
介绍信样本
2015/01/31 职场文书
三十年同学聚会感言
2015/07/30 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书