放大镜.html 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. position: absolute;
  24. left: 400px;
  25. top: 0;
  26. overflow: hidden;
  27. display: none;
  28. }
  29. #drag{
  30. width: 200px;
  31. height: 200px;
  32. background: rgba(0,0,0,0.3);
  33. position: absolute;
  34. left: 0;
  35. top: 0;
  36. display: none;
  37. }
  38. #bigBox img{
  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 small = document.getElementById('smallBox')
  55. var drag = document.getElementById('drag')
  56. var big = document.getElementById('bigBox')
  57. var bigImg = document.getElementById('bigImg')
  58. small.onmouseover = function(){
  59. drag.style.display = 'block'
  60. big.style.display = 'block'
  61. }
  62. small.onmouseout = function(){
  63. drag.style.display = 'none'
  64. big.style.display = 'none'
  65. }
  66. small.onmousemove = function(e){
  67. var smallLeft = e.clientX - drag.offsetWidth / 2
  68. var smallTop = e.clientY - drag.offsetHeight / 2
  69. console.log(smallLeft)
  70. drag.style.left = smallLeft + 'px'
  71. drag.style.top = smallTop + 'px'
  72. if(drag.offsetLeft <= 0){
  73. drag.style.left = 0
  74. }
  75. if(drag.offsetTop <=0){
  76. drag.style.top = 0
  77. }
  78. var xLeft = small.offsetWidth - drag.offsetWidth//遮罩层移动的最大宽度
  79. var xTop = small.offsetHeight - drag.offsetHeight
  80. if(drag.offsetLeft > xLeft){
  81. drag.style.left = xLeft + 'px'
  82. }
  83. if(drag.offsetTop > xTop){
  84. drag.style.top = xTop + 'px'
  85. }
  86. var n = drag.offsetLeft / xLeft //遮罩层移动的距离 / 最大宽度 = 比例
  87. var m = drag.offsetTop / xTop
  88. var zLeft = bigImg.offsetWidth - big.offsetWidth // 大图的宽度 - 大盒子的宽度 = 移动的最大距离
  89. var zTop = bigImg.offsetHeight - big.offsetHeight
  90. bigImg.style.left = -zLeft * n + 'px' // 比例 * 最大的距离 = 当前的定位
  91. bigImg.style.top = -zTop * m + 'px'
  92. }
  93. </script>
  94. </body>
  95. </html>