9.放大镜.html 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. #container {
  16. position: relative;
  17. }
  18. #small {
  19. width: 400px;
  20. height: 400px;
  21. position: relative;
  22. }
  23. #big {
  24. position: absolute;
  25. top: 0;
  26. left: 400px;
  27. width: 400px;
  28. height: 400px;
  29. overflow: hidden;
  30. display: none;
  31. }
  32. #drag {
  33. width: 200px;
  34. height: 200px;
  35. background:rgba(0,0,0,.3);
  36. position: absolute;
  37. top: 0;
  38. left: 0;
  39. display: none;
  40. }
  41. #bigImg {
  42. position:absolute;
  43. }
  44. </style>
  45. </head>
  46. <body>
  47. <div id="container">
  48. <div id="small">
  49. <img src="./images/6.jpg" alt="">
  50. <div id="drag"></div>
  51. </div>
  52. <div id="big">
  53. <img src="./images/7.jpg" id="bigImg" alt="">
  54. </div>
  55. </div>
  56. <script>
  57. var drag = document.getElementById("drag");
  58. var small = document.getElementById("small");
  59. var bigImg = document.getElementById("bigImg");
  60. var big = document.getElementById("big");
  61. // 思路:鼠标移入小盒子时 遮罩显示 大盒子显示
  62. // 鼠标移出小盒子是 遮罩隐藏 大盒子隐藏
  63. small.onmouseover = function() {
  64. drag.style.display = 'block';
  65. big.style.display = 'block';
  66. }
  67. small.onmouseout = function() {
  68. drag.style.display = 'none';
  69. big.style.display = 'none';
  70. }
  71. small.onmousemove = function(e) {
  72. var smallLeft = e.clientX - drag.offsetWidth / 2;
  73. var smallTop = e.clientY - drag.offsetHeight / 2;
  74. drag.style.top = smallTop + 'px';
  75. drag.style.left = smallLeft + 'px';
  76. if(drag.offsetTop <=0) {
  77. drag.style.top = 0;
  78. }
  79. if(drag.offsetLeft <=0) {
  80. drag.style.left = 0;
  81. }
  82. // 思路:求出遮罩最大可移动的范围
  83. var maxLeft = small.offsetWidth - drag.offsetWidth;
  84. var maxTop = small.offsetHeight - drag.offsetHeight;
  85. if(drag.offsetLeft > maxLeft) {
  86. drag.style.left = maxLeft + 'px';
  87. }
  88. if(drag.offsetTop > maxTop) {
  89. drag.style.top = maxTop + 'px';
  90. }
  91. // 思路:求出大盒子最大可移动的范围
  92. var bigLeft = bigImg.offsetWidth - big.offsetWidth;
  93. var bigTop = bigImg.offsetHeight - big.offsetHeight;
  94. var x = drag.offsetLeft / maxLeft;
  95. var y = drag.offsetTop / maxTop;
  96. bigImg.style.left = -x * bigLeft + 'px';
  97. bigImg.style.top = -y * bigTop + 'px';
  98. console.log(drag.offsetLeft)
  99. }
  100. </script>
  101. </body>
  102. </html>