尝试动手制作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实现鼠标点击文本框显示隐藏提示文本
Feb 23 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
Dec 10 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
Jan 29 Javascript
同时使用n个window onload加载实例介绍
Apr 25 Javascript
详解JavaScript中undefined与null的区别
Mar 29 Javascript
connect中间件session、cookie的使用方法分享
Jun 17 Javascript
JS特效实现图片自动播放并可控的效果
Jul 31 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
Sep 13 Javascript
微信小程序实现tab切换效果
Nov 21 Javascript
vue router 源码概览案例分析
Oct 09 Javascript
Vue项目总结之webpack常规打包优化方案
Jun 06 Javascript
JavaScript定时器常见用法实例分析
Nov 15 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 文件扩展名 获取函数
2009/06/03 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
Python3.5多进程原理与用法实例分析
2019/04/05 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
python并发编程多进程 互斥锁原理解析
2019/08/20 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
中专自我鉴定范文
2013/10/16 职场文书
会计自我鉴定
2014/02/04 职场文书
槐乡的孩子教学反思
2014/04/27 职场文书
大型会议策划方案
2014/05/17 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
法律服务所工作总结
2015/08/10 职场文书
党务工作者主要事迹材料
2015/11/03 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL