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之大字符串的连接的StringBuffer 类
May 08 Javascript
jquery获取元素索引值index()示例
Feb 13 Javascript
详解JavaScript中Hash Map映射结构的实现
May 21 Javascript
Javascript ES6中数据类型Symbol的使用详解
May 02 Javascript
JavaScript中click和onclick本质区别与用法分析
Jun 07 Javascript
vuex state中的数组变化监听实例
Nov 06 Javascript
js实现打字小游戏
Dec 17 Javascript
js实现经典贪吃蛇小游戏
Mar 19 Javascript
npm ci命令的基本使用方法
Sep 20 Javascript
js实现三角形粒子运动
Sep 22 Javascript
vue中可编辑树状表格的实现代码
Oct 31 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
Nov 06 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
PHP与Perl之间知识点区别整理
2019/03/19 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
lyhucSelect基于Jquery的Select数据联动插件
2011/03/29 Javascript
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
2016/05/17 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
浅谈Express异步进化史
2017/09/09 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
连接pandas以及数组转pandas的方法
2019/06/28 Python
pandas 时间格式转换的实现
2019/07/06 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
flask框架中的cookie和session使用
2021/01/31 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
电脑售后服务承诺书
2014/03/27 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
2016年元旦寄语
2015/08/17 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
MySQL常见优化方案汇总
2022/01/18 MySQL