实现网页图片的放大镜效果
2020-03-28 20:07
169 查看
实现某东上面的商品放大镜效果
实现代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style type="text/css"> *{ //清除浏览器原带的格式 margin: 0; padding: 0; } #content{ width: 800px; height: 800px; margin: 0 auto; border: 1px green solid; font-size: 12px; } #box{ width: 200px; height: 60px; position: relative; /*整个大盒子,并设定相对定位好移动盒子内部的图片*/ } #b4{ width: 160px; /*注意b1,b2,b3,b4盒子的大小必须注意他们的比例*/ height: 160px; /*b4大小是b1的4倍*/ overflow: hidden; border: 1px black solid; display: none; /*开始时这个盒子是隐藏的*/ position: relative; /*设定定位,利于b3移动*/ } #b1{ display: none; /*开始时这个盒子是隐藏的*/ position: absolute; /*设定定位,利于b1移动*/ width: 40px; /*设定盒子的大小*/ height: 40px; background-color: rgba(150,150,150,0.3); cursor:move; /*改变鼠标光标样式*/ } #b2{ width: 100%; /*设定盒子的大小,为继承父标签大小,宽200px,高60px*/ height:100%; } #b3{ position:absolute; /*设定定位,利于b3移动*/ width: 800px; /*大小为b2的4倍*/ height: 240px; } </style> <script type="text/javascript" defer=""> window.addEventListener('load',function () { var box=document.querySelector('#box'); var b4=document.querySelector('#b4'); box.addEventListener('mouseover',function () { //鼠标移动到box上面的时候b1和b4显示 box.children[0].style.display='block'; b4.style.display='block'; }); box.addEventListener('mouseout',function () { //鼠标移出box的时候b1和b4隐藏 box.children[0].style.display='none'; b4.style.display='none'; }); box.addEventListener('mousemove',function (e) { var x=e.pageX-box.offsetLeft-box.children[0].offsetWidth/2; var y=e.pageY-box.offsetTop-box.children[0].offsetHeight/2; /* *这里的x,y都是相对与box的left和top * x=鼠标到网页左边框距离 - box的左边框到网页左边框距离 - b1宽的一半 * y=鼠标到网页上边框距离 - box的上边框到网页上边框距离 - b1高的一半 * 那么为什么要减去b1的宽一半或者高一半呢? * 因为盒子开始定位的时候鼠标在盒子的左上角,而需要鼠标定位到盒子中间,所以需要这样 */ var xBig=box.children[1].offsetWidth-box.children[0].offsetWidth; if(x<=0){ x=0; } else if(x >= xBig){ x=xBig; } if(y<=0){ //顶顶顶 y=0; } else if(y >= box.children[1].offsetHeight-box.children[0].offsetHeight){ y=box.children[1].offsetHeight-box.children[0].offsetHeight; } /* * xBig(鼠标在x方向的最大移动距离)=b2的宽度 - b1的宽度 * x值不能小于0,当x小于0的时候,令x=0 * x值不能大于xBig,当x大于xBig的时候,令x=xBig * y也是同理 */ box.children[0].style.left=x+'px'; //给b1设定定位 box.children[0].style.top=y+'px'; var xMBig=b4.firstElementChild.offsetWidth-b4.offsetWidth; b4.firstElementChild.style.left=-x*xMBig/xBig+'px'; //给b3设定定位 b4.firstElementChild.style.top=-y*xMBig/xBig+'px'; /* * 因为b1,b2,b3,b4大小是相关的 * 所以b1在b2里面移动的x,y距离与b3在b4里面移动的距离有一定的倍数关系 * xMBig是b3在b4里面的最大移动距离 * 也要注意b3定位的ldft和top一定是负的 */ }); }) </script> </head> <body> <div id="content"> <div id="box"> <div id="b1"></div> <img src="../images/image07.jpg" alt="" id="b2" title=""/> <div id="b4"><img src="../images/image07.jpg" id="b3" alt=""/></div> </div> </div> </body> </html>
效果图:
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 图片放大镜效果实现过程详解
- 实现图片切换效果【不仅仅是图片哦,网页也可以的】
- JS实现图片放大镜效果的方法
- JS实现图片放大镜效果的方法
- Jquery实现图片放大镜效果的思路及代码(自写)
- javascript制作网页图片上实现下雨效果
- jQuery实现图片放大镜效果
- 图片放大镜效果-- jquery实现
- js实现图片滑动及放大镜效果(仿淘宝京东图片展示)
- jquery框架中使用jqzoom插件实现图片放大镜效果
- JQUERY实现鼠标悬停在图片上模拟放大镜效果
- 原生js实现图片放大镜效果
- 实现图片滑动、滚动、菜单栏(导航)滑动、文字滚动等效果的网页插件superslide2
- 图片放大镜效果-- jquery实现
- 原生JS实现图片的放大镜效果
- 用css3的cursor:zoom-in/zoom-out实现微博看图片放大镜效果
- 实现图片滑动、滚动、菜单栏(导航)滑动、文字滚动等效果的网页插件superslide2
- JavaScript实现图片放大镜效果
- 实现flash的图片切换效果【可以切换多个网页或者图片】
- 用css3的cursor:zoom-in/zoom-out实现微博看图片放大镜效果