zsydgithub 1 년 전
부모
커밋
9fdeab4f9c
1개의 변경된 파일112개의 추가작업 그리고 0개의 파일을 삭제
  1. 112 0
      Dom/9_放大镜/放大镜.html

+ 112 - 0
Dom/9_放大镜/放大镜.html

@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Document</title>
+  <style>
+    * {
+      margin: 0;
+      padding: 0;
+    }
+
+    #container {
+      position: relative;
+    }
+
+    #smallBox {
+      width: 400px;
+      height: 400px;
+    }
+
+    #bigBox {
+      width: 400px;
+      height: 400px;
+      overflow: hidden;
+      position: absolute;
+      left: 400px;
+      top: 0;
+      display: none;
+    }
+
+    #drag {
+      width: 200px;
+      height: 200px;
+      background: rgba(0, 0, 0, 0.4);
+      position: absolute;
+      top: 0;
+      left: 0;
+      display: none;
+    }
+
+    #bigImg {
+      position: absolute
+    }
+  </style>
+</head>
+
+<body>
+  <div id="container">
+    <div id="smallBox">
+      <img src="images/1.jpg" alt="">
+      <div id="drag"></div>
+    </div>
+    <div id="bigBox">
+      <img src="images/2.jpg" alt="" id="bigImg">
+    </div>
+  </div>
+  <script>
+    var drag = document.getElementById('drag')
+    var small = document.getElementById('smallBox')
+    var big = document.getElementById('bigBox')
+    var bigImg = document.getElementById('bigImg')
+
+    //鼠标划入事件
+    small.onmouseover = function () {
+      drag.style.display = 'block'
+      big.style.display = 'block'
+    }
+    //鼠标划出事件
+    small.onmouseout = function () {
+      drag.style.display = 'none'
+      big.style.display = 'none'
+    }
+    //鼠标滑动的事件
+    small.onmousemove = function (e) {
+      var smallLeft = e.clientX - drag.offsetWidth / 2
+      var smallTop = e.clientY - drag.offsetHeight / 2
+      console.log(smallLeft)
+      drag.style.left = smallLeft + 'px'
+      drag.style.top = smallTop + 'px'
+      if (drag.offsetLeft <= 0) {
+        drag.style.left = 0
+      }
+      if (drag.offsetTop <= 0) {
+        drag.style.top = 0
+      }
+      //最大距离
+      var xLeft = small.offsetWidth - drag.offsetWidth
+      var xTop = small.offsetHeight - drag.offsetHeight
+      if (drag.offsetLeft > xLeft) {
+        drag.style.left = xLeft + 'px'
+      }
+      if (drag.offsetTop > xTop) {
+        drag.style.top = xTop + 'px'
+      }
+      //比例
+      var m = drag.offsetLeft / xLeft
+      var n = drag.offsetTop / xTop
+
+      //右侧可以移动的最大距离
+      var zLeft = bigImg.offsetWidth - big.offsetWidth
+      var zTop = bigImg.offsetHeight - big.offsetHeight
+
+      bigImg.style.left = -zLeft * m + 'px'
+      bigImg.style.top = -zTop * n + 'px'
+    }
+  </script>
+</body>
+
+</html>