123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <!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;
- left: 400px;
- top: 0;
- position: absolute;
- overflow: hidden;
- /* display: none; */
- }
- #drag{
- width: 200px;
- height: 200px;
- background: rgba(0,0,0,0.3);
- position: absolute;
- left: 0;
- top: 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 small = document.getElementById('smallBox')
- var drag = document.getElementById('drag')
- var big = document.getElementById('bigBox')
- var bigImg = document.getElementById('bigImg')
-
- //鼠标划入显示遮罩层
- small.onmouseover = function(){
- drag.style.display = 'block'
- }
- //鼠标划出显示遮罩层
- small.onmouseout = function(){
- drag.style.display = 'none'
- }
- //鼠标滑动
- small.onmousemove = function(e){
- var xLeft = e.clientX - drag.offsetWidth / 2
- var xTop = e.clientY - drag.offsetHeight /2
- drag.style.left = xLeft + 'px'
- drag.style.top = xTop + 'px'
- if(drag.offsetLeft <= 0){
- drag.style.left = 0
- }
- if(drag.offsetTop <= 0 ){
- drag.style.top = 0
- }
- //横轴最大移动距离
- var zLeft = small.offsetWidth - drag.offsetWidth
- //纵轴最大移动距离
- var zTop = small.offsetHeight - drag.offsetHeight
- if(drag.offsetLeft > zLeft){
- drag.style.left = zLeft + 'px'
- }
- if(drag.offsetTop > zTop){
- drag.style.top = zTop + 'px'
- }
- //遮罩层移动距离 / 横轴最大移动距离 = 比例
- var n = drag.offsetLeft / zLeft
- var m = drag.offsetTop / zTop
- //大图移动距离
- var yLeft = bigImg.offsetWidth - big.offsetWidth
- var yTop = bigImg.offsetHeight - big.offsetHeight
- bigImg.style.left = -yLeft * n + 'px'
- bigImg.style.top = -yTop * m + 'px'
- }
- </script>
- </body>
- </html>
|