放大镜.html 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <style>
  9. * {
  10. margin: 0;
  11. padding: 0;
  12. }
  13. #container {
  14. position: relative;
  15. }
  16. #smallBox {
  17. width: 400px;
  18. height: 400px;
  19. }
  20. #bigBox {
  21. width: 400px;
  22. height: 400px;
  23. overflow: hidden;
  24. position: absolute;
  25. left: 400px;
  26. top: 0;
  27. display: none;
  28. }
  29. #drag {
  30. width: 200px;
  31. height: 200px;
  32. background: rgba(0, 0, 0, 0.4);
  33. position: absolute;
  34. top: 0;
  35. left: 0;
  36. display: none;
  37. }
  38. #bigImg {
  39. position: absolute
  40. }
  41. </style>
  42. </head>
  43. <body>
  44. <div id="container">
  45. <div id="smallBox">
  46. <img src="images/1.jpg" alt="">
  47. <div id="drag"></div>
  48. </div>
  49. <div id="bigBox">
  50. <img src="images/2.jpg" alt="" id="bigImg">
  51. </div>
  52. </div>
  53. <script>
  54. var drag = document.getElementById('drag')
  55. var small = document.getElementById('smallBox')
  56. var big = document.getElementById('bigBox')
  57. var bigImg = document.getElementById('bigImg')
  58. //鼠标划入事件
  59. small.onmouseover = function () {
  60. drag.style.display = 'block'
  61. big.style.display = 'block'
  62. }
  63. //鼠标划出事件
  64. small.onmouseout = function () {
  65. drag.style.display = 'none'
  66. big.style.display = 'none'
  67. }
  68. //鼠标滑动的事件
  69. small.onmousemove = function (e) {
  70. var smallLeft = e.clientX - drag.offsetWidth / 2
  71. var smallTop = e.clientY - drag.offsetHeight / 2
  72. console.log(smallLeft)
  73. drag.style.left = smallLeft + 'px'
  74. drag.style.top = smallTop + 'px'
  75. if (drag.offsetLeft <= 0) {
  76. drag.style.left = 0
  77. }
  78. if (drag.offsetTop <= 0) {
  79. drag.style.top = 0
  80. }
  81. //最大距离
  82. var xLeft = small.offsetWidth - drag.offsetWidth
  83. var xTop = small.offsetHeight - drag.offsetHeight
  84. if (drag.offsetLeft > xLeft) {
  85. drag.style.left = xLeft + 'px'
  86. }
  87. if (drag.offsetTop > xTop) {
  88. drag.style.top = xTop + 'px'
  89. }
  90. //比例
  91. var m = drag.offsetLeft / xLeft
  92. var n = drag.offsetTop / xTop
  93. //右侧可以移动的最大距离
  94. var zLeft = bigImg.offsetWidth - big.offsetWidth
  95. var zTop = bigImg.offsetHeight - big.offsetHeight
  96. bigImg.style.left = -zLeft * m + 'px'
  97. bigImg.style.top = -zTop * n + 'px'
  98. }
  99. </script>
  100. </body>
  101. </html>