Javascript仿京东放大镜的效果


Posted in Javascript onMarch 01, 2017

随便找一个图片吧。小伙伴们,想怎么玩就怎么玩(注意路径),亲自测试,绝对没问题。

话不多说,请看代码:

<html>
<head>
<meta charset="utf-8">
<style type="text/css">
body,div{margin: 0; padding: 0;}
#zhuti{ 
margin:50px;
position: relative;
}
#small{
width: 300px;
height: 187px;
border: 1px solid #000;
}
#big{
border: 1px solid #666;
overflow: hidden;
width: 300px;
height: 187px;
position: absolute;
left: 310px;
top: 0px;
display: none; /*默认隐藏*/
}
#jingtou{
width: 50px;
height: 50px;
background: #666;
opacity: 0.4;
position: absolute;
display: none; /*默认隐藏*/
}
#bigimg{
position: absolute;
}
</style>
</head>
<body>
<div id="zhuti">
<div id="small">
<div id="jingtou"></div>
<img src="img/ktm_small.jpg">
</div>
<div id="big">
<img src="img/ktm_big.jpg" id="bigimg">
</div>
</div>
<script type="text/JavaScript">
//封装一个函数(id形式参数)
function $(id) {
return document.getElementById(id);
}
var small =$('small');
var big =$('big');
var jingtou =$('jingtou');
var zhuti =$('zhuti');
var bigimg =$('bigimg');
//监视鼠标(镜头)
small.onmouseover = function(){
big.style.display='block';
jingtou.style.display='block';
}
small.onmouseout = function(){
big.style.display='none';
jingtou.style.display='none';
}
//挡鼠板移动的时候
small.onmousemove = function(event){
//获得当前坐标 //减去镜头宽度的一半
var left = event.clientX - zhuti.offsetLeft -jingtou.offsetWidth/2;
var top = event.clientY -zhuti.offsetTop - jingtou.offsetHeight/2;
//进行判断语句(固定0的位置)
//向左走
if(left<=0){
left =0;
}
//向上走
if(top<=0){
top =0;
}
//向右走
if(left >= small.offsetWidth-jingtou.offsetWidth){
left = small.offsetWidth-jingtou.offsetWidth;
}
//向下走
if(top >= small.offsetHeight-jingtou.offsetHeight){
top = small.offsetHeight-jingtou.offsetHeight;
}
//小图的比例
var smallX = left / (small.offsetWidth - jingtou.offsetWidth);
//var smallX = left / (small.offsetWidth - jingtou.offsetWidth);
var smallY = top / (small.offsetHeight - jingtou.offsetHeight);
//var smallY = top / (small.offsetHeight - jingtou.offsetHeight);
var bigX = -smallX * (bigimg.offsetWidth - big.offsetWidth); 
var bigY = -smallY * (bigimg.offsetHeight - big.offsetHeight);
//求a和b的值
bigimg.style.left = bigX + 'px';
bigimg.style.top = bigY + 'px';
//镜头距离左边的位置==鼠标距离左边的位置
jingtou.style.left = left +'px';
jingtou.style.top = top +'px';
}
</script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript中void(0)的具体含义解释
Feb 27 Javascript
jQuery 技巧小结
Apr 02 Javascript
网站基于flash实现的Banner图切换效果代码
Oct 14 Javascript
一不小心就做错的JS闭包面试题
Nov 25 Javascript
详解Javacript和AngularJS中的Promises
Feb 09 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
Aug 11 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
Mar 21 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
Sep 03 Javascript
微信小程序云开发使用方法新手初体验
May 16 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
Apr 30 jQuery
微信小程序实现拍照和相册选取图片
May 09 Javascript
Ajax实现不刷新取最新商品
Mar 01 #Javascript
Angular1.x复杂指令实例详解
Mar 01 #Javascript
JS中使用 after 伪类清除浮动实例
Mar 01 #Javascript
Angular1.x自定义指令实例详解
Mar 01 #Javascript
轻松学习Javascript闭包
Mar 01 #Javascript
js图片延迟加载(Lazyload)三种实现方式
Mar 01 #Javascript
node.js实现回调的方法示例
Mar 01 #Javascript
You might like
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
工作需要写的一个js拖拽组件
2011/07/28 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
详解A标签中href=&quot;&quot;的几种用法
2017/08/20 Javascript
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
python中dict使用方法详解
2019/07/17 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
JAVA程序员面试题
2012/10/03 面试题
仓库管理专业个人自我评价范文
2013/11/11 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
2014年作风建设心得体会
2014/10/22 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
委托书格式范文
2015/01/28 职场文书
伏羲庙导游词
2015/02/09 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
企业安全生产检查制度
2015/08/06 职场文书
学生病假条范文
2015/08/17 职场文书
Log4j.properties配置及其使用
2021/08/02 Java/Android