原生js模仿京东图片放大镜效果

本是古典 何须时尚 2022-05-29 12:21 354阅读 0赞

实现放大镜效果,是需要两张图片,记得两张图片的比例要保持一致哦

嗯,挺简单的,所以直接上代码喽,有不懂的可以评论区留言哦

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>放大镜练习</title>
  6. <style>
  7. #box{width:200px; height:200px; position:absolute; left:10px; top:10px;}
  8. #img1{width:200px; height:200px;}
  9. #oSpan{width:80px; height:80px; opacity:0.5; filter:alpha(opacity=50); position:absolute; background:yellow; display:none;}
  10. #mark{width:200px; height:200px; position:absolute; opacity:0; filter:alpha(opacity=0); left:0px; top:0px;}
  11. #big{width:400px; height:400px; overflow:hidden; position:absolute; left:300px; top:10px; display:none;}
  12. #bimg{position:absolute; left:0px; top:0px;}
  13. </style>
  14. </head>
  15. <body>
  16. <div id="box">
  17. <img id="img1" src="b2.jpg"/>
  18. <span id="oSpan"></span>
  19. <div id="mark"></div>
  20. </div>
  21. <div id="big"><img id="bimg" src="b1.jpg"/></div>
  22. <script>
  23. var oDiv = document.getElementById('box');
  24. var oSpan = oDiv.getElementsByTagName('span')[0];
  25. var oBig = document.getElementById('big');
  26. var oBimg = document.getElementById('bimg');
  27. oDiv.onmouseover = function(ev){
  28. var ev = ev||event;
  29. var L = ev.clientX - oDiv.offsetLeft;
  30. var T = ev.clientY - oDiv.offsetTop;
  31. oSpan.style.display = 'block';
  32. oSpan.style.left = L - oSpan.offsetWidth+'px';//计算鼠标移入时,放大镜的位置
  33. oSpan.style.top = T - oSpan.offsetHeight+'px';
  34. oBig.style.display = 'block';
  35. document.onmousemove = function(ev){
  36. var ev = ev||event;
  37. var oW = oDiv.offsetWidth - oSpan.offsetWidth;
  38. var oH = oDiv.offsetHeight - oSpan.offsetHeight;
  39. var b = oBimg.offsetWidth/oDiv.offsetWidth;
  40. L = ev.clientX -oSpan.offsetWidth/2;
  41. T = ev.clientY - oSpan.offsetHeight/2;
  42. if(L<0){//下面的是限制放大镜的移动范围
  43. L=0;
  44. }
  45. if(L>oW){
  46. L = oW + 'px';
  47. }
  48. if(T<0){
  49. T=0;
  50. }
  51. if(T>oH){
  52. T = oH + 'px';
  53. }
  54. oSpan.style.left = L +'px';
  55. oSpan.style.top = T +'px';
  56. oBimg.style.left = - L*b +'px';
  57. oBimg.style.top = -T*b +'px';
  58. }
  59. }
  60. oDiv.onmouseout = function(){
  61. oSpan.style.display = 'none';
  62. oBig.style.display = 'none';
  63. document.onmousemove = null;
  64. }
  65. </script>
  66. </body>
  67. </html>

发表评论

表情:
评论列表 (有 0 条评论,354人围观)

还没有评论,来说两句吧...

相关阅读

    相关 原生js实现放大镜效果

    今天是中秋佳节,在这了我祝大家中秋快乐,心想事成,工作顺利哈! 放大镜效果在电商网站上较为常见的 一个效果,主要针对鼠标在图片选取部分放大查看。效果如图所示 ![...

    相关 JS 图片放大镜

      需求:             1.小遮罩可以随鼠标在小盒子上移动             2.遮罩层有自己的移动范围             3.鼠标在遮罩层的

    相关 js 仿京东放大镜

    功能模块 1. 整个案例可以分为三个功能模块 2. 鼠标经过小图片盒子, 黄色的遮挡层 和 大图片盒子显示,离开隐藏2个盒子功能 3. 黄色的遮挡层跟随鼠标功能。 4.