js實現放大鏡效果


 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>無標題文檔</title>
 6 <style type="text/css">
 7 #pic{
 8     float:left;    
 9     }
10 #photo{
11     float:left;
12     height:100px;
13     width:100px;
14     margin-left:50px;
15     background-repeat:no-repeat;
16     background-image:url(1.jpg);
17     }
18 #mask{
19     width:50px;
20     height:50px;
21     background-color:#3FC;
22     position:absolute;
23     border-style:dashed;
24     border-color:#00F;
25     opacity:0.5;
26     }
27 </style>
28 </head>
29 
30 <body>
31 <div id="pic">
32 <img src="2.jpg" id="picture"  style="cursor:move"/>
33 </div>
34 <div id="photo"></div>
35 <div id="mask"></div>>
36 </body>
37 <script type="text/javascript">
38 document.body.addEventListener("mousemove",function(e){
39     var pho=document.getElementById("photo");
40     var pic=document.getElementById("pic");
41     {
42     var masker=document.getElementById("mask");
43     
44     masker.style.left=e.clientX-25+"px";
45     masker.style.top=e.clientY-25+"px";
46     pho.style.backgroundPosition=((50-e.clientX*2)+"px "+(50-e.clientY*2)+"px");
47     }
48 },false);
49 </script>
50 </html>

 

將小圖名稱改為2.jpg,大圖名稱改為1.jpg

以上即為demo部分,注意該demo請在非IE瀏覽器中運行,下面詳細講解一下設計思路

我主要采用一張大圖跟一張小圖,我這里小圖的長寬都是大圖的一半,當鼠標在小圖上移動時,可以預先設定出一個區域,我的demo是以鼠標為中心,划分出一個50*50的預選區,所以在放大區就應該是100*100的區域,當鼠標移動到圖片上時出現一個蒙版即預選區,同時在放大區生成一張大圖。

代碼部分:

1.html部分

1 <body>
2 <div id="pic">
3 <img src="2.jpg" id="picture"  style="cursor:move"/>
4 </div>
5 <div id="photo"></div>
6 <div id="mask"></div>>
7 </body>

三個div沒什么好說的,一個圖片區域pic,一個放大區photo,一個蒙版區mask

2.css部分

 1 <style type="text/css">
 2 #pic{
 3     float:left;    
 4     
 5     }
 6 
 7 #photo{
 8     float:left;
 9     height:100px;
10     width:100px;
11     margin-left:50px;
12     background-repeat:no-repeat;
13     background-image:url(1.jpg);
14     }
15 #mask{
16     width:50px;
17     height:50px;
18     background-color:#3FC;
19     position:absolute;
20     border-style:dashed;
21     border-color:#00F;
22     opacity:0.5;
23     }
24 </style>

需要說一下的是,mask蒙版區域大小為50*50,所以放大區相應的放大一倍即為100*100,opcity為蒙版透明度

3.js部分

 1 <script type="text/javascript">
 2 document.body.addEventListener("mousemove",function(e){
 3     var pho=document.getElementById("photo");
 4     var pic=document.getElementById("pic");
 5     {
 6     var masker=document.getElementById("mask");
 7     
 8     masker.style.left=e.clientX-25+"px";
 9     masker.style.top=e.clientY-25+"px";
10     pho.style.backgroundPosition=((50-e.clientX*2)+"px "+(50-e.clientY*2)+"px");
11     }
12 },false);
13 </script>

 

捕捉鼠標移動事件,e.clientX為當前鼠標坐標,以鼠標為中心做一個50*50的蒙版,然后在放大區以兩倍的放大倍數顯示出來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM