原生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 相关文章推荐
你真的了解JavaScript吗?
Feb 24 Javascript
js 中 document.createEvent的用法
Aug 29 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
May 22 Javascript
让新消息在网页标题闪烁提示的jQuery代码
Nov 04 Javascript
js的回调函数详解
Jan 05 Javascript
JavaScript实现仿网易通行证表单验证
May 25 Javascript
网页挂马方式整理及详细介绍
Nov 03 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
Feb 14 Javascript
使用Angular-CLI构建NPM包的方法
Sep 07 Javascript
详解关于element el-button使用$attrs的一个注意要点
Nov 09 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
Oct 18 Javascript
vue-cli4使用全局less文件中的变量配置操作
Oct 21 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 动态生成静态HTML页面示例代码
2014/01/15 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
php+ajax实现无刷新数据分页的办法
2015/11/02 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
javascript类型转换示例
2014/04/29 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python实现合并两个列表的方法分析
2018/05/28 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
农村面貌改造提升实施方案
2014/03/18 职场文书
健康家庭事迹材料
2014/05/02 职场文书
销售员岗位职责
2014/06/09 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL