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 相关文章推荐
使用js修改客户端注册表的方法
Aug 09 Javascript
jQuery中:input选择器用法实例
Jan 03 Javascript
angular.element方法汇总
Jan 07 Javascript
jQuery子窗体取得父窗体元素的方法
May 11 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
Nov 07 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
Dec 23 Javascript
卸载安装Node.js与npm过程详解
Aug 15 Javascript
JavaScript数组的5种迭代方法
Sep 29 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
May 12 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
Jun 12 Javascript
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
jQuery实现电梯导航模块
Dec 22 jQuery
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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
php 模拟POST|GET操作实现代码
2010/07/20 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
Python Socket传输文件示例
2017/01/16 Python
Python随机读取文件实现实例
2017/05/25 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
分析运行中的 Python 进程详细解析
2019/06/22 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
利用python实现逐步回归
2020/02/24 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
Python中Qslider控件实操详解
2021/02/20 Python
运动会跳远加油稿
2014/02/20 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers