javascript放大镜效果的简单实现


Posted in Javascript onDecember 09, 2013

这个效果并不难,要点是位置和比例设置,

捕获鼠标位置、判断鼠标位置区域、还有onmouseover事件、onmousemove事件、onmouseout事件

设置显示大图的比例,小图上显示的切图比例都要弄准确点,最好是2倍啦,4倍啦。

主要注意宽度,我这里的图片m.jpg是1440X900的....

<!DOCTYPE html PUBLIC "-//W3C//DTD Xhtml 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>放大镜效果</title>
<style type="text/css">
*{margin:0;padding:0;}
#smallimg{width:360px;float:left;position:relative;border:1px solid red;}
#smallimg img{ width:360px;}
#bigimg{float:left;width:400px;height:400px;margin-left:40px;border:1px solid #ccc;display:none;}
#showimg{width:100px;height:100px;background:#fff;cursor:move; position:absolute;border:1px solid #666;opacity:0.5;filter:alpha(opacity=50);display:none;}
</style>
</head>
<body>
<div id="smallimg">
 <img src="jq/m.jpg" alt=""/>
 <div id="showimg"> </div>
</div>
<div id="bigimg"> </div>

<script type="text/javascript">
var $=function(id){return typeof id=="string"?document.getElementById(id):id}
var smallimg = $("smallimg");
var showimg = $("showimg");//滤镜图片
var bigimg = $("bigimg");
var small_url = smallimg.getElementsByTagName("img")[0].getAttribute("src");
var show_half = maxWidth = maxHeight = 0;
smallimg.onmouseover = function(){
 showimg.style.display = "block";
 bigimg.style.display = "inline";
 show_half = showimg.offsetHeight/2;
 maxWidth = smallimg.clientWidth - showimg.offsetWidth;
 maxHeight = smallimg.clientHeight - showimg.offsetHeight;
 //上面两个变量指明showimg允许活动的区域
};
smallimg.onmousemove = function(e){
 var e=window.event?window.event:e;
 var num=bigimg.clientWidth/showimg.clientWidth;
 var Top = e.clientY - smallimg.offsetTop - show_half;
 var Left = e.clientX - smallimg.offsetLeft - show_half;
 //获取当前移动的showimg位置 计算方法是 鼠标坐标 - 最外面容器的坐标 - 盒子的宽(高)的/2 
 Top = Top<0?0:Top>maxHeight?maxHeight:Top;
 Left = Left<0?0:Left>maxWidth?maxWidth:Left;
 showimg.style.top = Top + "px";
 showimg.style.left = Left + "px";
 bigimg.style.background = "url("+small_url+") -"+Left*num+"px -"+Top*num+"px no-repeat";
};
smallimg.onmouseout = function(){
 showimg.style.display="none";
 bigimg.style.background ="";
 bigimg.style.display="none"
};
</script>
</body>
</html>
Javascript 相关文章推荐
javascript中的几个运算符
Jun 29 Javascript
javascript 可以拖动的DIV(二)
Jun 26 Javascript
jquery 图片Silhouette Fadeins渐显效果
Feb 07 Javascript
基于jquery跨浏览器显示的file上传控件
Oct 24 Javascript
getElementByIdx_x js自定义getElementById函数
Jan 24 Javascript
jsp网页搜索结果中实现选中一行使其高亮
Feb 17 Javascript
深入探寻seajs的模块化与加载方式
Apr 14 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
Mar 27 Javascript
浅谈JS函数节流防抖
Oct 18 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
Mar 28 Javascript
详解在网页上通过JS实现文本的语音朗读
Mar 28 Javascript
vue $set 给数据赋值的实例
Nov 09 Javascript
javascript贪吃蛇完整版(源码)
Dec 09 #Javascript
关于js内存泄露的一个好例子
Dec 09 #Javascript
JS连连看源码完美注释版(推荐)
Dec 09 #Javascript
解析Javascript中难以理解的11个问题
Dec 09 #Javascript
深入理解Javascript作用域与变量提升
Dec 09 #Javascript
Javascript全局变量var与不var的区别深入解析
Dec 09 #Javascript
jquery div拖动效果示例代码
Dec 08 #Javascript
You might like
什么情况下可以不写PHP的闭合标签“?&gt;”
2014/08/28 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
javascript 动态参数判空操作
2008/12/22 Javascript
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
node.js require() 源码解读
2015/12/13 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
vue-form表单验证是否为空值的实例详解
2019/10/29 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
剖析Python的Twisted框架的核心特性
2016/05/25 Python
import的本质解析
2017/10/30 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
python重试装饰器的简单实现方法
2019/01/31 Python
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
电子商务个人职业生涯规划范文
2014/02/12 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
个人总结怎么写
2015/02/26 职场文书
产品调价通知函
2015/04/20 职场文书
运动会5000米加油稿
2015/07/21 职场文书
教师听课学习心得体会
2016/01/15 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers