原生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 MD5加密实现代码
Mar 15 Javascript
jQuery截取指定长度字符串代码
Aug 21 Javascript
WEB前端设计师常用工具集锦
Dec 09 Javascript
基于JS实现的倒计时程序实例
Jul 24 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
Oct 28 Javascript
JavaScript中动态向表格添加数据
Jan 24 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
Apr 02 jQuery
基于JavaScript实现带数据验证和复选框的表单提交
Aug 23 Javascript
JS中关于正则的巧妙操作
Aug 31 Javascript
JS实现简单的浮动碰撞效果示例
Dec 28 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
Jun 15 Javascript
使用vue实现多规格选择实例(SKU)
Aug 23 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&amp;MYSQL留言板源码
2020/07/19 PHP
PHP Socket 编程
2010/04/09 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
jQuery 1.0.2
2006/10/11 Javascript
json 定义
2008/06/10 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
2016/12/05 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
python网络编程学习笔记(一)
2014/06/09 Python
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
单链表反转python实现代码示例
2018/02/08 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
Python中的流程控制详解
2021/02/18 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
记帐员岗位责任制
2014/02/08 职场文书
企业职业病防治方案
2014/05/29 职场文书
建筑横幅标语
2014/10/09 职场文书
2015年度销售个人工作总结
2015/03/31 职场文书
自信主题班会
2015/08/14 职场文书
Pyhton模块和包相关知识总结
2021/05/12 Python
python 使用pandas读取csv文件的方法
2022/12/24 Python