尝试动手制作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 相关文章推荐
jquery CSS选择器笔记
Mar 29 Javascript
jQuery创建自己的插件(自定义插件)的方法
Jun 10 Javascript
Prototype源码浅析 Number部分
Jan 16 Javascript
js移除事件 js绑定事件实例应用
Nov 28 Javascript
js 获取元素在页面上的偏移量的方法汇总
Apr 13 Javascript
jQuery实现的仿百度分页足迹效果代码
Oct 30 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
Oct 13 Javascript
jQuery插件fullPage.js实现全屏滚动效果
Dec 02 Javascript
Vue全家桶实践项目总结(推荐)
Nov 04 Javascript
详解JSON Web Token 入门教程
Jul 30 Javascript
JavaScript实现留言板案例
Mar 17 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
Oct 17 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调用三种数据库的方法(1)
2006/10/09 PHP
我的论坛源代码(三)
2006/10/09 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
angular 动态组件类型详解(四种组件类型)
2017/02/22 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
小程序实现多选框功能
2018/10/30 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
Python中asyncore的用法实例
2014/09/29 Python
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
一个基于flask的web应用诞生(1)
2017/04/11 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
python装饰器练习题及答案
2019/11/01 Python
python两种注释用法的示例
2020/10/09 Python
Python调用飞书发送消息的示例
2020/11/10 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
苹果台湾官网:Apple台湾
2019/01/05 全球购物
中专自我鉴定范文
2013/10/16 职场文书
社区活动邀请函范文
2014/01/29 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
总结几个非常实用的Python库
2021/06/26 Python
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技
windows系统搭建WEB服务器详细教程
2022/08/05 Servers