尝试动手制作javascript放大镜效果


Posted in Javascript onDecember 25, 2015

本文实例为大家介绍了基于javascript实现放大镜效果的原理和代码,分享给大家供大家参考,具体内容如下:

原理:

A:放大镜   B:小图片

C:大图片可视区域

D:大图片

鼠标的位置应该在放大镜的中央,所以鼠标位置为:

clientX=A.offsetLeft()+B.offsetLeft+1/2*A.offsetWidth;

clientY=A.offsetTop()+B.offsetTop+1/2*A.offsetHeight;

鼠标移动过程中:放大镜A和大图D是一起随鼠标成比例运动的,因为当放大镜A的右边框移动到与小图B的右边框重合时,大图D也应该移动到了右边框与C的右边框重合的地方,所以,他们的移动比例是:(D.offsetWidth-C.offsetWidth)/(B.offsetWidth-A.offsetWidth)=b/a

尝试动手制作javascript放大镜效果

HTML部分:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>放大镜效果</title>

<style>

*{
margin:0;
padding:0; 
}

#demo{
position: relative;
margin:30px 50px;
width: 1000px;
height: 600px;
border: 1px solid #000;
}

#zhezhao{
position: absolute;
z-index:2;
background:red;
width:402px;
height:402px;
left: 20px;
top:20px;
opacity: 0;
}

#small{
position: absolute;
width:402px;
height:402px;
left: 20px;
top:20px;
border: 1px solid #000;
z-index: 1;
}


#small img{
position: absolute;

}


#big{
position: relative;
top: 20px;
left: 460px;
width:500px;
height:500px;
border: 1px solid #000;
overflow: hidden;
display: none;
z-index: 1;
}


#big img{
position: absolute;

}


#glass{
position: absolute;
width:100px;
height: 100px;
opacity: 0.3;
background:orange;
display: none;
}

</style>


</head>


<body>
<div id='demo'>
<div id='zhezhao'> </div> 
<!-- 在ie浏览器中,当鼠标在放大镜上是,浏览器并不认为鼠标同样在小图的div上,所以加个遮罩层 兼容ie-->


<div id='small'> 
<img src='images/small.png' alt=''>
<div id='glass'></div>
</div>
<div id='big'>
<img src='images/big.jpg' alt='' >

</div>

</div>



</body>

</html>

js部分:

<script>

window.onload=function(){
var demo =document.getElementById('demo');
var small =document.getElementById('small');
var big =document.getElementById('big');
var glass =document.getElementById('glass')
var image =document.getElementById('big').getElementsByTagName('img')[0];
var zhezhao=document.getElementById('zhezhao');

zhezhao.onmouseover=function(){
glass.style.display='block'
big.style.display='block'
}
zhezhao.onmouseout=function(){
glass.style.display='none'
big.style.display='none'
}

//弄清楚clientX,offsetLeft,left的关系,注意区分
zhezhao.onmousemove=function(ev){
var event=ev
var left=event.clientX-demo.offsetLeft-small.offsetLeft-glass.offsetWidth/2;
var top =event.clientY-demo.offsetTop -small.offsetTop -glass.offsetHeight/2;
if(left<0){
left=0;
}else if(left>(small.offsetWidth-glass.offsetWidth)){
left=small.offsetWidth-glass.offsetWidth
}

if(top<0){
top=0;
}else if(top>(small.offsetHeight- glass.offsetHeight)){
top=small.offsetHeight- glass.offsetHeight
}
glass.style.left =left+'px';
glass.style.top =top+'px';

 

var percent=(image.offsetWidth-big.offsetWidth)/(small.offsetWidth-glass.offsetWidth)

image.style.left=-percent*left+'px'
image.style.top =-percent*top+'px'



}
}

</script>

以上就是本文的全部内容,希望对大家实现javascript放大镜效果有所帮助。

Javascript 相关文章推荐
js继承的实现代码
Aug 05 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
Mar 16 Javascript
jQuery.buildFragment使用方法及思路分析
Jan 07 Javascript
Jquery图片滚动与幻灯片的实例代码
Apr 08 Javascript
js 自动播放的实例代码
Nov 19 Javascript
JavaScript遍历求解数独问题的主要思路小结
Jun 12 Javascript
JS快速实现移动端拼图游戏
Sep 05 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
Jul 24 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
Aug 15 Javascript
JavaScript时间与时间戳的转换操作实例分析
Dec 07 Javascript
vue 实现滚动到底部翻页效果(pc端)
Jul 31 Javascript
公众号SVG动画交互实战代码
May 31 Javascript
js操作cookie保存浏览记录的方法
Dec 25 #Javascript
js实现跨域的多种方法
Dec 25 #Javascript
jquery.cookie.js用法实例详解
Dec 25 #Javascript
理解javascript中try...catch...finally
Dec 25 #Javascript
javascript实现简单加载随机色方块
Dec 25 #Javascript
学习JavaScript鼠标响应事件
Dec 25 #Javascript
理解javascript中DOM事件
Dec 25 #Javascript
You might like
PHP禁止页面缓存的代码
2011/10/23 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
php数组添加元素方法小结
2014/12/20 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
python线程池threadpool实现篇
2018/04/27 Python
pip命令无法使用的解决方法
2018/06/12 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
python多线程http压力测试脚本
2019/06/25 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
机械系大学毕业生推荐信
2013/11/27 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫