尝试动手制作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,实现插入排序实现代码
Jul 31 Javascript
jquery select动态加载选择(兼容各种浏览器)
Feb 01 Javascript
JavaScript定时显示广告代码分享
Mar 02 Javascript
使用AngularJS对路由进行安全性处理的方法
Jun 18 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
Nov 30 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
Feb 29 Javascript
JavaScript简单获取页面图片原始尺寸的方法
Jun 21 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
Dec 28 Javascript
jQuery设计思想
Mar 07 Javascript
JS之if语句对接事件动作逻辑(详解)
Jun 28 Javascript
JS设计模式之数据访问对象模式的实例讲解
Sep 30 Javascript
微信小程序自定义弹窗wcPop插件
Nov 19 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
PHP4实际应用经验篇(2)
2006/10/09 PHP
php 验证码制作(网树注释思想)
2009/07/20 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
jquery validate使用攻略 第四步
2010/07/01 Javascript
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
vue实现分页加载效果
2019/12/24 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
详解Python 切片语法
2019/06/10 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
python实现加密的方式总结
2020/01/19 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
使用Django清空数据库并重新生成
2020/04/03 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
专科毕业生自我鉴定
2013/12/01 职场文书
运动会广播稿60字
2014/01/15 职场文书
高一学生评语大全
2014/04/25 职场文书
一分钟演讲稿
2014/04/30 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
公司经理任命书
2014/06/05 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
2019年怎样写好导游词?
2019/07/02 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书