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 相关文章推荐
jquery方法+js一般方法+js面向对象方法实现拖拽效果
Aug 30 Javascript
js简单实现根据身份证号码识别性别年龄生日
Nov 29 Javascript
用jquery修复在iframe下的页面锚点失效问题
Aug 22 Javascript
JavaScript实现列出数组中最长的连续数
Dec 29 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
Nov 07 Javascript
Vue-router 类似Vuex实现组件化开发的示例
Sep 15 Javascript
详解在express站点中使用ejs模板引擎
Sep 21 Javascript
基于Vue实现图书管理功能
Oct 17 Javascript
简述vue状态管理模式之vuex
Aug 29 Javascript
js的对象与函数详解
Jan 21 Javascript
openlayers4实现点动态扩散
Aug 17 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
Aug 24 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
PHP初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
php var_export与var_dump 输出的不同
2013/08/09 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
php解析url并得到url中的参数及获取url参数的四种方式
2015/10/26 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
js 方法实现返回多个数据的代码
2009/04/30 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
python的几种开发工具介绍
2007/03/07 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
Python自定义线程类简单示例
2018/03/23 Python
对python3新增的byte类型详解
2018/12/04 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
纯css3实现的竖形无限级导航
2014/12/10 HTML / CSS
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
社区国庆节活动方案
2014/02/05 职场文书
遗体告别仪式主持词
2014/03/20 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
2014年学生会工作总结
2014/11/07 职场文书
家长会欢迎词
2015/01/23 职场文书
小学运动会通讯稿
2015/07/18 职场文书
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android