123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <!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>
|