11.放大镜.html 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>Document</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. list-style: none;
  12. text-decoration: none;
  13. box-sizing: border-box;
  14. }
  15. #small {
  16. width: 400px;
  17. height: 400px;
  18. }
  19. #drag {
  20. width: 200px;
  21. height: 200px;
  22. background: rgba(0, 0, 0, 0.3);
  23. position: absolute;
  24. top: 0;
  25. left: 0;
  26. display: none;
  27. }
  28. #big {
  29. width: 400px;
  30. height: 400px;
  31. position: absolute;
  32. top: 0;
  33. left: 400px;
  34. overflow: hidden;
  35. display: none;
  36. }
  37. #bigImg {
  38. position: absolute;
  39. }
  40. </style>
  41. </head>
  42. <body>
  43. <div id="container">
  44. <div id="small">
  45. <img src="./images/6.jpg" alt="" />
  46. <div id="drag"></div>
  47. </div>
  48. <div id="big">
  49. <img id="bigImg" src="./images/7.jpg" alt="" />
  50. </div>
  51. </div>
  52. <script>
  53. var small = document.getElementById("small");
  54. var big = document.getElementById("big");
  55. var drag = document.getElementById("drag");
  56. var bigImg = document.getElementById("bigImg");
  57. small.onmouseover = function () {
  58. drag.style.display = "block";
  59. big.style.display = "block";
  60. };
  61. small.onmouseout = function () {
  62. drag.style.display = "none";
  63. big.style.display = "none";
  64. };
  65. small.onmousemove = function (e) {
  66. var smallLeft = e.clientX - drag.offsetWidth / 2;
  67. var smallTop = e.clientY - drag.offsetHeight / 2;
  68. drag.style.left = smallLeft + "px";
  69. drag.style.top = smallTop + "px";
  70. if (drag.offsetLeft <= 0) {
  71. drag.style.left = 0;
  72. }
  73. if (drag.offsetTop <= 0) {
  74. drag.style.top = 0;
  75. }
  76. // 求出遮罩在小盒子最大的可移动范围
  77. var left1 = small.offsetWidth - drag.offsetWidth;
  78. var top1 = small.offsetHeight - drag.offsetHeight;
  79. if (drag.offsetLeft > left1) {
  80. drag.style.left = left1 + "px";
  81. }
  82. if (drag.offsetTop > top1) {
  83. drag.style.top = top1 + "px";
  84. }
  85. // 大盒子可移动的最大范围
  86. var bigLeft = bigImg.offsetWidth - big.offsetWidth;
  87. var bigTop = bigImg.offsetHeight - big.offsetHeight;
  88. // 移动的比例
  89. var x = drag.offsetLeft / left1;
  90. var y = drag.offsetTop / top1;
  91. // 大图片的移动
  92. bigImg.style.top = -bigTop * y + "px";
  93. bigImg.style.left = -bigLeft * x + "px";
  94. };
  95. </script>
  96. </body>
  97. </html>