第44天:鼠标移动放大效果
1、鼠标移动放大效果
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>鼠标移动放大效果</title> 6 <style> 7 .box{ 8 width: 350px; 9 height: 350px; 10 position: relative; 11 margin: 100px auto; 12 margin-left: 175px; 13 } 14 .box .small{ 15 width: 350px; 16 height: 350px; 17 border:1px solid #c1c1c1; 18 position: absolute; 19 left: 0; 20 top:0; 21 cursor: move; 22 } 23 .box .big{ 24 width: 450px; 25 height: 450px; 26 border: 1px solid #c1c1c1; 27 position: absolute; 28 left:360px; 29 top:0; 30 overflow: hidden; 31 display: none; 32 } 33 .mask{ 34 width: 100px; 35 height: 100px; 36 background: rgba(255,255,0,0.4); 37 position: absolute; 38 top:0; 39 left:0; 40 display: none; 41 cursor: move; 42 } 43 .big img{ 44 position: absolute; 45 top:0; 46 left:0; 47 } 48 </style> 49 </head> 50 <body> 51 <div class="box" id="box"> 52 <div class="small"> 53 <img src="images/001.jpg" alt=""> 54 <div class="mask"></div> 55 </div> 56 <div class="big"> 57 <img src="images/0001.jpg" alt=""> 58 </div> 59 </div> 60 </body> 61 </html> 62 <script> 63 var box=document.getElementById("box"); 64 var small=box.children[0]; 65 var big=box.children[1]; 66 var mask=small.children[1]; 67 var bigImg=big.children[0];//大盒子里的图片 68 small.onmouseover=function(){//鼠标移入 69 mask.style.display="block"; 70 big.style.display="block"; 71 } 72 small.onmouseout=function(){//鼠标离开 73 mask.style.display="none"; 74 big.style.display="none"; 75 } 76 77 var x=0; 78 var y=0; 79 small.onmousemove=function(event){ 80 var event=event||window.event; 81 //鼠标移动的x值=鼠标的位置-大盒子左距-遮罩宽度的一半 82 var x=event.clientX-this.offsetParent.offsetLeft-mask.offsetWidth/2; 83 var y=event.clientY-this.offsetParent.offsetTop-mask.offsetHeight/2; 84 //控制鼠标只能在盒子里面移动 85 if(x<0){ 86 x=0; 87 }else if(x>small.offsetWidth-mask.offsetWidth){ 88 x=small.offsetWidth-mask.offsetWidth; 89 } 90 if(y<0){ 91 y=0; 92 }else if(y>small.offsetHeight-mask.offsetHeight){ 93 y=small.offsetHeight-mask.offsetHeight; 94 } 95 mask.style.left=x+"px"; 96 mask.style.top=y+"px"; 97 98 //大盒子移动的距离=小盒子移动距离*大盒子和小盒子的比例数 99 bigImg.style.left=-x*big.offsetWidth/small.offsetWidth+"px"; 100 bigImg.style.top=-y*big.offsetHeight/small.offsetHeight+"px"; 101 } 102 </script>
运行效果: