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 相关文章推荐
jQuery 1.3 和 Validation 验证插件1.5.1
Jul 09 Javascript
Ajax搜索结果页面下方的分页按钮的生成
Apr 05 Javascript
利用js动态添加删除table行的示例代码
Dec 16 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
Mar 04 Javascript
jQuery简单实现图片预加载
Apr 20 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
Jan 10 Javascript
JavaScript获取键盘按键的键码(参照表)
Jan 10 Javascript
Easyui在treegrid添加控件的实现方法
Jun 23 Javascript
Vue.js实现列表清单的操作方法
Nov 15 Javascript
Router解决跨模块下的页面跳转示例
Jan 11 Javascript
微信小程序wx:for循环的实例详解
Oct 07 Javascript
Echarts实现单条折线可拖拽效果
Dec 19 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
PHP5 面向对象(学习记录)
2009/12/02 PHP
php统计文章排行示例
2014/03/04 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
2019/09/05 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
Javascript的闭包详解
2014/12/26 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
js实现Tab选项卡切换效果
2020/07/17 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
Python中的hypot()方法使用简介
2015/05/18 Python
Python基于DES算法加密解密实例
2015/06/03 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
Python实现的桶排序算法示例
2017/11/29 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
英国计算机商店:Technextday
2019/12/28 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
工程力学专业毕业生求职信
2013/10/06 职场文书
学校三节实施方案
2014/06/09 职场文书
导游词之扬州大明寺
2019/10/09 职场文书
win10搭建配置ftp服务器的方法
2022/08/05 Servers