放大镜.html 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. left: 400px;
  24. top: 0;
  25. position: absolute;
  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. #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 small = document.getElementById('smallBox')
  55. var drag = document.getElementById('drag')
  56. var big = document.getElementById('bigBox')
  57. var bigImg = document.getElementById('bigImg')
  58. //鼠标划入显示遮罩层
  59. small.onmouseover = function(){
  60. drag.style.display = 'block'
  61. }
  62. //鼠标划出显示遮罩层
  63. small.onmouseout = function(){
  64. drag.style.display = 'none'
  65. }
  66. //鼠标滑动
  67. small.onmousemove = function(e){
  68. var xLeft = e.clientX - drag.offsetWidth / 2
  69. var xTop = e.clientY - drag.offsetHeight /2
  70. drag.style.left = xLeft + 'px'
  71. drag.style.top = xTop + 'px'
  72. if(drag.offsetLeft <= 0){
  73. drag.style.left = 0
  74. }
  75. if(drag.offsetTop <= 0 ){
  76. drag.style.top = 0
  77. }
  78. //横轴最大移动距离
  79. var zLeft = small.offsetWidth - drag.offsetWidth
  80. //纵轴最大移动距离
  81. var zTop = small.offsetHeight - drag.offsetHeight
  82. if(drag.offsetLeft > zLeft){
  83. drag.style.left = zLeft + 'px'
  84. }
  85. if(drag.offsetTop > zTop){
  86. drag.style.top = zTop + 'px'
  87. }
  88. //遮罩层移动距离 / 横轴最大移动距离 = 比例
  89. var n = drag.offsetLeft / zLeft
  90. var m = drag.offsetTop / zTop
  91. //大图移动距离
  92. var yLeft = bigImg.offsetWidth - big.offsetWidth
  93. var yTop = bigImg.offsetHeight - big.offsetHeight
  94. bigImg.style.left = -yLeft * n + 'px'
  95. bigImg.style.top = -yTop * m + 'px'
  96. }
  97. </script>
  98. </body>
  99. </html>