亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery當鼠標懸停時放大圖片的效果實例

2019-11-20 22:34:49
字體:
來源:轉載
供稿:網友

這個效果最初源于小敏同志的一個想法,剛開始做的時候只能實現彈出的圖片是固定的,不能隨鼠標移動,最后加以改善,終于實現了比較理想的效果。今天就把制作該效果的經驗與大家一同分享。先看看最終效果演示:

HTML結構部分:
先編寫一個無序列表的結構,a標簽中的img標簽用來存放小圖片,a標簽添加一個rel屬性,用來存放大圖片的路徑。

復制代碼 代碼如下:

<UL id=gallery sizcache="6" sizset="7">
 <LI sizcache="6" sizset="7"><A class="smallimage" href="http://www.49028c.com" rel=images/001_big.jpg><IMG alt="" src="images/001_small.jpg"></A>
 <LI sizcache="6" sizset="8"><A class="smallimage" href="http://www.49028c.com" rel=images/002_big.jpg><IMG alt="" src="images/002_small.jpg"></A>
 <LI sizcache="6" sizset="9"><A class="smallimage" href="http://www.49028c.com" rel=images/003_big.jpg><IMG alt="" src="images/003_small.jpg"></A>
 </LI></UL>

CSS樣式表部分:
bigimage是用jQuery創建的一個p標簽的id,用來存放大圖片,設置其樣式為絕對定位,并先隱藏。給a標簽添加一個黑色的背景,是為了給圖片變暗的效果做鋪墊。就這樣,一個簡單的相冊效果就做好了。
復制代碼 代碼如下:

ul#gallery { list-style:none; width:660px; margin:0 auto 10px; padding-left:20px; border:1px solid #d3d3d3; background:#fff; overflow:hidden; }
 ul#gallery li { width:200px; height:200px; float:left; margin:20px 20px 20px 0; }   
 ul#gallery li a.smallimage { background:#333; /*添加一個黑色的背景為圖片變暗的效果做鋪墊*/ display:block; width:200px; height:200px; }  
 #bigimage { position:absolute; display:none; /*大圖片的父標簽設置相對定位并將顯示樣式設置為隱藏*/ }  
 #bigimage img { width:400px; height:400px; padding:5px; background:#fff; border:1px solid #e3e3e3; }

jQuery代碼部分:
先聲明2個變量x,y用來存放大圖片離鼠標的距離。在body中追加一個id為bigimage的p標簽,用來存放大圖片,大圖片的路徑就包含在了a標簽的rel屬性中。當鼠標在小圖片懸停的時候,將獲取到的鼠標在瀏覽器中的坐標賦值給大圖片絕對定位的坐標,并以淡入的效果顯示。之后,再給小圖片綁定一個mousemove事件,也就是當鼠標移動的時候,大圖片就會跟著鼠標移動了??匆韵碌拇a:
復制代碼 代碼如下:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
 <script type="text/javascript">
 //<![CDATA[
 $(function(){
     var x = 22;
     var y = 20;
     $("a.smallimage").hover(function(e){  //綁定一個鼠標懸停時事件
     //新建一個p標簽來存放大圖片,this.rel就是獲取到a標簽的大圖片的路徑,然后追加到body中
         $("body").append('<p id="bigimage"><img src="'+ this.rel + '" alt="" /></p>'); 
     //改變小圖片的透明度為0.5,結合上面的CSS,看起來就象是圖片變暗了
         $(this).find('img').stop().fadeTo('slow',0.5);
    //將鼠標的坐標和聲明的x,y做運算并賦值給大圖片絕對定位的坐標,然后以fadeIn的效果顯示
         $("#bigimage").css({top:(e.pageY - y ) + 'px',left:(e.pageX + x ) + 'px'}).fadeIn('fast');
     },function(){ //鼠標離開后 
     //將變暗的圖片復原
        $(this).find('img').stop().fadeTo('slow',1);
     //移除新增的p標簽
         $("#bigimage").remove();
     });
     $("a.smallimage").mousemove(function(e){  //綁定一個鼠標移動的事件
     //將鼠標的坐標和聲明的x,y做運算并賦值給大圖片絕對定位的坐標,這樣大圖片就能跟隨圖片而移動了
     $("#bigimage").css({top:(e.pageY -y ) + 'px',left:(e.pageX + x ) + 'px'});
     });
 });
 //]]>
 </script>

到這一步,效果已經差不多了,但是正如藍秋楓同志提到的,效果還并不完美。如果彈出的大圖片超過了瀏覽器的寬度就會出現滾動條,這對于用戶體驗來說的確很不好。趁周末有時間我又在原來的基礎上進行了修改。
先分析下思路,默認情況下,彈出的大圖片的位置始終是在當前鼠標指針的右側,如果當前鼠標指針離瀏覽器右側邊界的寬度小于彈出的大圖片的寬度時,就會出現圖片溢出瀏覽器的現象。那么只要寫一個語句判斷當前鼠標指針離瀏覽器右側的邊界的寬度是否小于大圖片的寬度,然后再根據這個判斷來顯示。
有了上面的思路就好辦了,為了使代碼更簡潔,提高復用性,我新增了一個widthJudge函數用于判斷寬度:
復制代碼 代碼如下:

function widthJudge(e){ 
        //頁面的總寬度減去鼠標當前的X坐標得到右側邊界的寬度 
     var marginRight = document.documentElement.clientWidth - e.pageX;     
             //獲取彈出的大圖片的寬度 
     var imageWidth = $("#bigimage").width();     
             //如果右側邊界的寬度小于彈出的大圖片的寬度 
    if(marginRight < imageWidth) 
     { 
                 //重新計算變量x的值 
         x = imageWidth + 22; 
                 //此時大圖片的位置應該是當前鼠標指針的寬度減去新的x的值 
        $("#bigimage").css({top:(e.pageY - y ) + 'px',left:(e.pageX - x ) + 'px'}); 
     }else{    //否則 
                  //仍將x定義為22,這一步千萬不能省略,因為之前x的值已經改變 
         x = 22; 
                 //如果右側的寬度值夠顯示大圖片,將仍然按照原來的位置顯示 
         $("#bigimage").css({top:(e.pageY - y ) + 'px',left:(e.pageX + x ) + 'px'}); 
     }; 
 }

最后再結合上面的代碼,完整的jQuery代碼部分如下:
復制代碼 代碼如下:

<script type="text/javascript"> 
 //<![CDATA[ 
 $(function(){    
     var x = 22; 
     var y = 20; 
     $("a.smallimage").hover(function(e){ 
             $("body").append('<p id="bigimage"><img src="'+ this.rel + '" alt="" /></p>'); 
             $(this).find('img').stop().fadeTo('slow',0.5); 
         widthJudge(e);    //調用寬度判斷函數 
         $("#bigimage").fadeIn('fast'); 
     },function(){ 
         $(this).find('img').stop().fadeTo('slow',1); 
         $("#bigimage").remove(); 
     });  
     $("a.smallimage").mousemove(function(e){ 
         widthJudge(e);    //調用寬度判斷函數 
     });  
     function widthJudge(e){ 
         var marginRight = document.documentElement.clientWidth - e.pageX; 
         var imageWidth = $("#bigimage").width(); 
         if(marginRight < imageWidth) 
         { 
             x = imageWidth + 22; 
             $("#bigimage").css({top:(e.pageY - y ) + 'px',left:(e.pageX - x ) + 'px'}); 
         }else{ 
             x = 22; 
             $("#bigimage").css({top:(e.pageY - y ) + 'px',left:(e.pageX + x ) + 'px'}); 
         }; 
     } 
 }); 
 //]]> 
 </script>

解決了圖片溢出瀏覽器的問題,這個效果還算不錯了。如果你喜歡這個效果,你可以下載源文件。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品亚洲欧美导航| 亚洲第一精品夜夜躁人人爽| 成人激情视频在线播放| 伊人伊成久久人综合网站| 日韩69视频在线观看| 欧美激情中文字幕在线| 久久人人爽人人爽人人片av高请| 日韩中文字幕欧美| 亚洲视频综合网| 日韩在线播放一区| 欧美一区在线直播| 欧美大成色www永久网站婷| 国产日韩精品一区二区| 亚洲男女自偷自拍图片另类| 国产69精品久久久久久| 国产综合福利在线| 国产精品亚洲激情| 成人黄色av网| 青草成人免费视频| 欧洲亚洲免费视频| 一区二区三区国产视频| 国产欧美久久久久久| 亚洲欧洲国产一区| 精品亚洲va在线va天堂资源站| 国产ts一区二区| 国产精品色午夜在线观看| 91精品啪在线观看麻豆免费| 亚洲日韩欧美视频| 欧美中文字幕在线观看| 亚洲japanese制服美女| 亚洲色在线视频| 亚洲国产中文字幕在线观看| 色偷偷噜噜噜亚洲男人的天堂| 欧美久久精品一级黑人c片| 中文字幕亚洲综合| 久久久人成影片一区二区三区| 国产精品91久久久久久| 日韩精品在线视频美女| www欧美xxxx| 日韩成人中文字幕在线观看| 色噜噜狠狠狠综合曰曰曰88av| 欧美激情欧美狂野欧美精品| 欧美精品做受xxx性少妇| 亚洲午夜女主播在线直播| 精品免费在线视频| 韩剧1988在线观看免费完整版| 国产精品欧美在线| 中文字幕在线视频日韩| 亚洲第一福利视频| 色777狠狠综合秋免鲁丝| 操人视频在线观看欧美| 精品久久久香蕉免费精品视频| 国产va免费精品高清在线观看| 日韩av在线网| 精品国产一区二区三区四区在线观看| 国产视频999| 亚洲欧美另类在线观看| 国产欧美精品xxxx另类| 中文字幕欧美日韩va免费视频| 国产精品第一视频| 国产在线拍偷自揄拍精品| 国外日韩电影在线观看| 青草青草久热精品视频在线观看| 欧美性色视频在线| 国产精品视频免费观看www| 亚洲精品视频二区| 91爱视频在线| 亚洲a级在线播放观看| 欧美亚洲另类在线| 亚洲社区在线观看| 欧美视频一区二区三区…| 欧美大尺度在线观看| 亚洲精品视频免费| 91久久国产综合久久91精品网站| 色无极亚洲影院| 国产91色在线|| 欧美成人剧情片在线观看| 92看片淫黄大片欧美看国产片| 久久99热精品这里久久精品| 韩曰欧美视频免费观看| 一区二区三区无码高清视频| 中文字幕欧美日韩| 一本一本久久a久久精品牛牛影视| 国产精品色视频| 91久久久久久久久久| 美女啪啪无遮挡免费久久网站| 日韩av在线一区二区| 欧美精品video| 欧美性猛交xxxx乱大交| 国产精品私拍pans大尺度在线| 国产欧美 在线欧美| 日韩在线一区二区三区免费视频| 亚洲欧美一区二区三区在线| 久国内精品在线| 亚洲精品电影在线观看| 欧美高清无遮挡| 国产乱人伦真实精品视频| 亚洲欧洲xxxx| 久久精品国亚洲| 欧美精品九九久久| 亚洲国产91精品在线观看| 欧美日本精品在线| 国产成人啪精品视频免费网| 亚洲欧美制服综合另类| 欧美影院成年免费版| 色噜噜亚洲精品中文字幕| 欧美特黄级在线| 91亚洲精品久久久久久久久久久久| 亚洲国产成人精品久久| 国产欧美日韩精品专区| 日韩成人网免费视频| 久久久人成影片一区二区三区观看| 97视频国产在线| 国产亚洲精品综合一区91| 欧美黄色性视频| 俺去亚洲欧洲欧美日韩| 久久精品国产亚洲精品2020| 国色天香2019中文字幕在线观看| 奇米4444一区二区三区| 日本道色综合久久影院| 日韩精品免费视频| 日韩精品一区二区三区第95| 久久精品国产清自在天天线| 精品亚洲精品福利线在观看| 中文一区二区视频| 亚洲欧美一区二区三区四区| 亚洲永久免费观看| 亚洲a∨日韩av高清在线观看| 久久久噜噜噜久噜久久| 欧美激情女人20p| 国产91成人video| 久久97久久97精品免视看| 色综合久久天天综线观看| 日韩在线不卡视频| 亚洲欧美中文日韩在线v日本| 成人性生交大片免费看小说| 亚洲美女免费精品视频在线观看| 日韩电影免费观看在线观看| 欧美一级高清免费播放| 亚洲一区第一页| 久久影院在线观看| 欧美俄罗斯性视频| www.亚洲人.com| 91在线观看免费网站| 日韩av在线网| 亚洲成人激情在线观看| 精品久久久久久久中文字幕| 97精品国产97久久久久久免费| 日本中文字幕成人| 日本亚洲欧洲色| 国产一区二区三区中文| 精品福利在线视频| 在线播放亚洲激情| 国产一区二区三区视频| 欧美另类69精品久久久久9999| 国产日韩中文字幕在线| 另类天堂视频在线观看| 亚洲精品一区二区网址| 亚洲人成伊人成综合网久久久| 亚洲午夜精品久久久久久久久久久久| 亚洲视频自拍偷拍| 亚洲天天在线日亚洲洲精| 国产精品成人播放| 日韩va亚洲va欧洲va国产|