尝试动手制作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 相关文章推荐
代码生成器 document.write()
Apr 15 Javascript
jquery 插件学习(三)
Aug 06 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
Aug 24 Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 Javascript
浅谈Javascript中匀速运动的停止条件
Dec 19 Javascript
详解JavaScript中的事件流和事件处理程序
May 20 Javascript
轻松掌握JavaScript中的Math object数学对象
May 26 Javascript
JavaScript中instanceof运算符的使用示例
Jun 08 Javascript
BootStrap入门教程(一)之可视化布局
Sep 19 Javascript
概述一个页面从输入URL到页面加载完的过程
Dec 16 Javascript
js+html5实现手机九宫格密码解锁功能
Jul 30 Javascript
JS实现将对象转化为数组的方法分析
Jan 21 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+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
跟老齐学Python之网站的结构
2014/10/24 Python
详解Python中的join()函数的用法
2015/04/07 Python
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
会计应聘求职信范文
2013/12/17 职场文书
林肯就职演讲稿
2014/05/19 职场文书
国庆节活动总结
2014/08/26 职场文书
作文评语怎么写
2014/12/25 职场文书
安全保证书
2015/01/16 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python