Javascript手把手教你做商品放大镜效果
来源:互联网 发布:站点数据和格点数据 编辑:程序博客网 时间:2024/06/05 21:02
<!DOCTYPE html><html> <!--放大镜的原理是设置两张图片一张正常 一张放大后的 放大后的设为隐藏 鼠标移入时候显示 然后在正常那边有一个小框 鼠标移动时候移动小框 然后拿小框left/top除以图片的宽/高 得到一个比值,拿比值去乘以大图片的宽/高 就可以得到大图片要移动的距离--> <head> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0; } .wrap { width: 650px; height: 432px; position: relative; } .box { position: relative; width: 650px; height: 432px; } .box img { width: 650px; height: 432px; } .bigImg { width: 650px; height: 432px; overflow: hidden; position: absolute; top: 0; left: 660px; display: none; } .bigImg img { position: absolute; width: 1300px; height: 864px; } .moveBox { display: none; position: absolute; width: 325px; height: 216px; top: 0; left: 0; background: rgba(255, 0, 255, 0.3); } </style> </head> <body> <div class="wrap"> <div class="box"> <img src="timg.jpg" alt="" /> <div class="moveBox"></div> </div> <div class="bigImg"> <img src="timg.jpg" alt="" /> </div> </div> </body> <script> //布局的话就是需要准备两张图片 一张正常 一张是放大后的; // 获取放图片的框框 var box = document.getElementsByClassName('box')[0]; // 获取移动的红色小框框 var moveBox = document.getElementsByClassName('moveBox')[0]; // 获取右边放大镜的框框 var big = document.getElementsByClassName('bigImg')[0]; // 获取右边放大镜里面的图片 var bigImg = big.getElementsByTagName('img')[0]; // 鼠标移入放图片框框触发移入事件;显示红色盒子和右边放大镜 box.onmouseenter = function() { moveBox.style.display = 'block'; big.style.display = 'block'; // 鼠标在盒子中移动时触发的事件 box.onmousemove = function(ev) { var ev = ev || event;// 获取鼠标在盒子内的x/y值 等于鼠标位置减去大盒子的offsetleft/top 然后为了鼠标居于红色盒子中心所以要减去小盒子的宽/高的一半; var x = ev.clientX - box.offsetLeft - moveBox.offsetWidth / 2; var y = ev.clientY - box.offsetTop - moveBox.offsetHeight / 2; //设置边界 小于0 或者大于大盒子减小盒子的宽/高; if (x < 0) { x = 0; } else if (x > box.offsetWidth - moveBox.offsetWidth) { x = box.offsetWidth - moveBox.offsetWidth; } if (y < 0) { y = 0; } else if (y > box.offsetHeight - moveBox.offsetHeight) { y = box.offsetHeight - moveBox.offsetHeigth; }// 将得到的x/y值 赋予小盒子的left/top 小盒子就会跟着鼠标移动 moveBox.style.left = x + 'px'; moveBox.style.top = y + 'px';// 然后用得到的x/y去除以大盒子的宽/高 得到一个比值 var proX = x / box.offsetWidth; var proY = y / box.offsetHeight;// 比值乘以大图片的宽/高就是大图片的移动距离 var imgX = proX * bigImg.offsetWidth; var imgY = proY * bigImg.offsetHeight; //注意大图片的移动方向应该与鼠标移动方向相反所以要乘以负数 bigImg.style.left = -imgX + 'px'; bigImg.style.top = -imgY + 'px'; };// 最后鼠标移开大大盒子事件 将小红色盒子和右边放大镜设为隐藏并且清空事件 box.onmouseleave = function() { moveBox.style.display = 'none'; big.style.display = 'none'; box.onmousemove = box.onmouseleave = null; } }; </script></html>
放大镜demo下载
阅读全文
1 0
- Javascript手把手教你做商品放大镜效果
- 商品图片放大镜效果
- PS新手教程!手把手教你打造好玩的放大镜动画效果
- 淘宝查看商品放大镜效果
- JavaScript 放大镜(商品放大)
- ShapeDrawable做放大镜效果
- ps 做放大镜效果
- javascript放大镜效果
- JavaScript图片放大镜效果
- javascript放大镜效果
- JavaScript 实现放大镜效果
- JavaScript放大镜效果
- JavaScript实现放大镜效果
- 使用jQuery制作商品放大镜效果
- 京东网的登录跟商品放大镜效果
- 仿京东商城商品图片 缩略图+放大镜效果
- 仿京东商城商品图片 缩略图+放大镜效果
- XQ_bigimg电商商品放大镜效果
- JS的内置对象(Date、String、Array、Math、Event)
- 文件格式之lmdb
- 微信小程序 懒加载
- CI中session的过期时间
- java.time.LocalDateTime
- Javascript手把手教你做商品放大镜效果
- C#网络编程(基本概念和操作)
- Centos7 vnc断电后黑屏问题解决方案
- java去除两个数组中相同的元素
- sphinx4的数据处理器的构建
- Leetcode--60. Permutation Sequence
- UAP开发(NC63)遇到的错误记录
- 最强PostMan使用教程(1)
- POJ 3304 Segments(在直线上投影有公共点,直线和线段交)