尝试动手制作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 相关文章推荐
javascript学习网址备忘
May 29 Javascript
jquery 必填项判断表单是否为空的方法
Sep 14 Javascript
一步一步制作jquery插件Tabs实现过程
Jul 06 Javascript
原生javascript获取元素样式属性值的方法
Dec 25 Javascript
javascript右下角弹层及自动隐藏(自己编写)
Nov 20 Javascript
jquery的live使用注意事项
Feb 18 Javascript
利用jQuery实现可以编辑的表格
May 26 Javascript
JavaScript中Cookie操作实例
Jan 09 Javascript
Bootstrap开关(switch)控件学习笔记分享
May 30 Javascript
关于javascript事件响应的基础语法总结(必看篇)
Dec 26 Javascript
实例讲解v-if和v-show的区别
Jan 31 Javascript
使用webpack搭建pixi.js开发环境
Feb 12 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 max_execution_time执行时间问题
2011/07/17 PHP
PHP简洁函数小结
2011/08/12 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
Python通过正则表达式选取callback的方法
2015/07/18 Python
Python守护线程用法实例
2017/06/23 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
Python3常见函数range()用法详解
2019/12/30 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
基于python3生成标签云代码解析
2020/02/18 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
什么是Web Service?
2012/07/25 面试题
大学毕业自我评价
2014/02/02 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
《歌唱二小放牛郎》教学反思
2014/04/19 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
总账会计岗位职责
2015/04/02 职场文书
高三化学教学反思
2016/02/22 职场文书
八年级作文之友情
2019/11/25 职场文书