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

首頁 > 編程 > JavaScript > 正文

非常漂亮的相冊集 使用jquery制作相冊集

2019-11-20 10:11:33
字體:
來源:轉載
供稿:網友

一、簡單的圖像翻滾

image-rollover常被用在交互式導航欄上,當我們的鼠標移動到導航欄時,按鈕的外觀改變。例如我們以如下幾幅黑白縮略圖作為導航圖表,當鼠標移動到指定圖標時,圖標變為明亮的彩色圖片。預覽如下:

該頁面的代碼十分簡單,我們以此為例逐步實現圖像的翻滾:

img-rollover.html

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Rollover Images</title><style>html , body{  line-height: 1;  background-color: #334873;}h1 {  font-family: 'ColaborateRegular', Arial, sans-serif;  }p {  font-family: 'ColaborateRegular', Arial, sans-serif;  color: white;}.logo {  letter-spacing: -1px;  color: rgb(195,151,51);  text-shadow: 2px 2px 1px rgba(0,0,0,.25);  font: normal 54px 'ColaborateThinRegular', Arial, sans-serif;}#gallery img {  display: inline-block;  margin: 10px;  border: 1px solid rgb(0,0,0);}</style><script src="js/jquery-1.7.2.min.js"></script><script>$(ducument).ready();//end ready</script></head><body><div class="wrapper"><div class="header">  <p class="logo">Easy Sir</p></div><div class="content">  <div class="main">    <h1>Rollover Images</h1>    <p>Mouse over the images below</p>    <div id="gallery">      <a href="images/blue.jpg"><img src="images/blue.jpg" width="70" height="70" alt="blue">     </a>      <a href="images/green.jpg"><img src="images/green.jpg" width="70" height="70" alt="green">     </a>      <a href="images/orange.jpg"><img src="images/orange.jpg" width="70" height="70" alt="orange">     </a>      <a href="images/purple.jpg"><img src="images/purple.jpg" width="70" height="70" alt="purple">     </a>      <a href="images/red.jpg"><img src="images/red.jpg" width="70" height="70" alt="red">     </a>      <a href="images/yellow.jpg"><img src="images/yellow.jpg" width="70" height="70" alt="yellow"></a>    </div>  </div></div></div></body></html>

這段代碼十分簡單。主要就是包含一個Logo部分,一個標題和6個<a>鏈接。中間我們省略了38行中的jQuery代碼部分,下面我們逐步在其中添加代碼實現圖像翻滾的效果。

1、改變圖像的src屬性

我們知道顯示在Web頁面的每一個圖像都有一個src屬性,該屬性表示文件的路徑,它指向服務器上的一幅圖片。如果我們更改了該屬性的值,瀏覽器將會顯示新的圖片。對于以上代碼,我們首先可以通過each()函數獲取所有img元素的遍歷,在對應位置添加如下代碼:

<script> $(document).ready(function(){  $('#gallery img').each(); });//end ready</script>

我們可以通過jQuery的arrt()方法來獲取img的src屬性。然后,我們將以上img的src屬性值替換為新圖片的路徑,方法如下:

<script> $(document).ready(function(){  $('#gallery img').each(function(){   var oldSrc = $(this).attr('src');   var newPic = new Image();   var imgExt = /(/./w{3,4}$)/;   newPic.src = oldSrc.replace(imgExt, '_h$1');  }); });//end ready</script>

后面的圖像預載入中會有這段代碼的簡單分析,這里首先復習一下,attr()函數允許讀取一個標簽的指定html屬性值,如上例中傳入的'src'參數即讀取圖片的src屬性。如果給attr()方法傳入第二個參數,則可以重設該屬性的值。比如:

$('#pic1').attr('src', 'images/newImg.jpg');

另外,attr()函數也允許我們一次修改多個HTML屬性值。比如,當我們需要載入的newImg和oldImg尺寸不符的時候,為了避免新圖片的扭曲,我們可以同時更改img元素的寬、高屬性。方法如下,傳入一個對象直接量作為參數:

var newImg = new Image();newImg.src = 'images/newImage.jpg';$('#pic1').attr({  src: newImg.src,  width: newImg.width,  height: newImg.height});

2、圖像預載入

如果我們不加”心機”地在鼠標移動到指定圖片時改變圖像的src屬性來實現image-rollover,會有一個小問題。當我們把鼠標移動到指定圖標上時,該圖像的src屬性被改變,此時瀏覽器會去新的src路徑下載資源圖片,現場下載圖片往往會給用戶一個明顯的延遲感。為了克服這個惱人的問題,我們可以預先將圖片下載到瀏覽器的緩存中。

實際上,在代碼2中,我們便實現了圖片的預載入。代碼2中的第4行,首先獲取每幅圖片的src屬性;第5行創建一個新圖像;第6~7行,使用正則表達式,在舊圖像src末尾添加_h后賦給新創建圖像的src。例如舊圖片src為'images/blue.jpg',將'images/blue_h.jpg'賦給新創建的newPic的src屬性。

代碼執行到'newPic.src = oldSrc.replace(imgExt, ‘_h$1');'時,瀏覽器便會到指定的src去下載新圖片放在瀏覽器緩存中。此時尚未觸發鼠標事件,我們通過在腳本開始處將需要的圖片逐一下載實現圖像的預載入。

3、添加hover()事件實現圖像rollover

在完成圖像預載入后,接下來就是給需要翻滾的圖片添加一個hover事件了。當鼠標移動到指定的圖片時,圖片變為絢麗的彩色,移走時變回黑白。我們在代碼2的基礎上,作如下添加:

 $(document).ready(function(){  $('#gallery img').each(function(){   var oldSrc = $(this).attr('src');   var newPic = new Image();   var imgExt = /(/./w{3,4}$)/;   newPic.src = oldSrc.replace(imgExt, '_h$1');   $(this).hover(    function(){     $(this).attr('src', newPic.src);    },    function(){     $(this).attr('src', oldSrc);    }   );//end hover  }); });//end ready

代碼十分簡單,只不過在7~14行通過this給當前圖片添加了一個hover事件,鼠標移入移出時改變圖片的src。此時,保存添加后的img-rollover.html,注意將需要包含的js/jquery-1.7.2.min.js以及圖片資源按照代碼中指定的路徑放置完好。大功告成,可以像預覽圖片那樣測試圖片導航圖片翻滾的效果了。

二、漂亮的相冊集

在實現圖像的翻滾之后,我們希望進一步,當我們點擊小的縮略圖的時候,能夠展現圖片的大圖,像一個可以翻看的相冊一樣。預覽如下:

接下來我們在實現了小圖翻滾的代碼1的基礎上,增添相冊集的功能。

1、為什么要把img放在鏈接中

可能有人不理解,為什么要把img分別包含在<a>鏈接中。實際上這是一種無干擾的JavaScript技術,如果你的瀏覽器關閉了JavaScript,這里將圖像包含在一個鏈接中,當用戶點擊小圖的時候,同樣會訪問到大圖文件。只不過是通過鏈接的方式,單擊鏈接時會退出當前Web頁面并根據鏈接載入大圖文件。如下圖所示:

以上是為關閉了JavaScript的用戶準備的。然而在通常情況下,對于使用JS的訪問者,我們希望單擊小的縮略圖的時候在頁面上呈現該圖的大圖,而不是鏈接到另一個頁面。一般情況下,單擊一個鏈接會使Web瀏覽器載入鏈接指向的內容,所以此處第一步我們需要做的就是阻止瀏覽器在單擊圖片鏈接的時候跳轉頁面。我們使用事件的preventDefault()方法來阻止事件的常規行為,添加如下代碼:

 $(document).ready(function(){  ...//省略未改動部分  $('#gallery a').click(function(evt){   evt.preventDefault();  });//end click });//end ready

添加的代碼為鏈接添加單擊事件,單擊鏈接時,通過事件的preventDefault()方法阻止了事件的常規行為。此時我們再在頁面單擊圖片鏈接的時候,瀏覽器便不會跳轉到大圖頁面了。當然,對于沒有JavaScript的瀏覽器依然會實現跳轉,因為關閉是通過JavaScript來完成的。

2、單擊縮略圖在頁面呈現大圖

為了顯示大圖,我們在上面代碼基礎上添加一個id為bigImg的div,如代碼4第9行:

<div id="gallery">  <a href="images/blue.jpg"><img src="images/blue.jpg" width="70" height="70" alt="blue"></a>  <a href="images/green.jpg"><img src="images/green.jpg" width="70" height="70" alt="green"></a>  <a href="images/orange.jpg"><img src="images/orange.jpg" width="70" height="70" alt="orange"></a>  <a href="images/purple.jpg"><img src="images/purple.jpg" width="70" height="70" alt="purple"></a>  <a href="images/red.jpg"><img src="images/red.jpg" width="70" height="70" alt="red"></a>  <a href="images/yellow.jpg"><img src="images/yellow.jpg" width="70" height="70" alt="yellow"></a></div><div id="bigImg"><div>

接下來,我們通過jQuery為要顯示的大圖創建一個img標簽,在代碼3中添加如下代碼:

  ...//省略未改動部分  $('#gallery a').click(function(evt){   evt.preventDefault();   var imgPath = $(this).attr('href');   var newImg = $('<img src="' + imgPath + '">');   newImg.hide();   $('#bigImg').prepend(newImg);   newImg.fadeIn(1000);  });//end click

在代碼5的第5行,首先通過attr()函數獲取<a>的href屬性,即鏈接地址imgPath;第6行根據該連接地址創建一個img標簽,將該標簽的src屬性賦值為imgPath;第7行,首先將圖片隱藏,后面將通過淡入的方式華麗出現;第8行將img標簽添加到<div id="bigImg"></div>中,如果沒有第7行的隱藏操作,此時圖像會立即出現;第9行,使用淡入的方式顯示圖像。OK,保存代碼,在瀏覽器中打開,點擊縮略圖,發現已經有了相冊查看效果了,但是,當我們連續點擊相冊圖片的時候,歷史圖片并不會消失,如果我們一直點擊下去,圖片會一直羅列。如下圖所示:

實際上,每當我們點擊一個縮略圖的時候,代碼都會為我們創建一個新的img并添加到<div id="bigImg"></div>中,從DOM的角度看,會不停地增加子節點:

為了實現”相冊”翻閱的效果,我們在顯示新的相片的時候同時要把之前的圖片刪掉。繼續在代碼5中作如下添加:

  ...//省略未改動部分  $('#gallery a').click(function(evt){   evt.preventDefault();   var imgPath = $(this).attr('href');   var oldImg = $('#bigImg img');   var newImg = $('<img src="' + imgPath + '">');   newImg.hide();   $('#bigImg').prepend(newImg);   newImg.fadeIn(1000);   oldImg.fadeOut(1000, function(){    $(this).remove();   });  });//end click

代碼第6行首先獲取當前存在的圖像oldImg,在新的圖片淡入的時候,此圖應該進行淡出處理。11~13行,在新的圖片淡入之后,oldImg淡出。同時給fadeOut函數傳入一個回調函數,在oldImg淡出之后一并移除該圖像的img標簽。這樣我們就保證在DOM樹中<div id="bigImg"></div>始終只有一個img節點,而不會無限地增長下去。

接下來進行一些細節的調整,當我們點入這個頁面的時候,希望默認顯示第一幅圖片,為了實現這個小功能,我們只需要在代碼6后面添加一行代碼:

  ...//省略未改動部分  $('#gallery a').click(function(evt){   evt.preventDefault();   var imgPath = $(this).attr('href');   var oldImg = $('#bigImg img');   var newImg = $('<img src="' + imgPath + '">');   newImg.hide();   $('#bigImg').prepend(newImg);   newImg.fadeIn(1000);   oldImg.fadeOut(1000, function(){    $(this).remove();   });  });//end click  $('#gallery a:first').click();

我們在后面添加了$('#gallery a:first').click();,在jQuery中,如果沒有給事件函數傳遞任何參數,jQuery便會觸發一次該事件。保存代碼,重新用瀏覽器打開,第一幅圖片已經默認顯示了:

3、css絕對定位實現圖片的重疊

漂亮的相冊集基本上已經完成了,但是吹毛求疵地看,當我們更換要查看的照片的時候,舊圖片的淡出會在新圖的后面完成,給人一種贅余不利落的感覺:

為了解決這個問題,我們讓新圖的淡入和舊圖的淡出重疊顯示。為了實現圖片的重疊顯示我們需要用到css的絕對定位。

通常情況下,在隱藏或者添加一個新的元素的時候,其他元素會像流一樣自動移動來填補空白或者給新的元素騰位置。但是像我們本文的示例,如果我們不希望看到這樣的效果,我們可以使用css的絕對定位。css的絕對定位會把一個元素放置在常規頁面內容流之外,這樣就不會在內容流中出現填補移動等操作了。如果我們使用絕對定位將元素定位在相同的位置,那么元素將會重疊在一起。本例中,這恰恰是我們想要的。實現起來其實十分簡單,只需要在css中將<div id="bigImg"></div>中的img指定為絕對定位就可以了。我們在代碼1的</style>前添加以下代碼:

#bigImg img {  position: absolute;}

保存,重新用瀏覽器打開,大功告成!漂亮的相冊已經做好了。

jquery文件下載

以上就是本文的全部內容,希望對大家學習jquery程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一视频在线观看| 26uuu亚洲伊人春色| 亚洲专区在线视频| 国产精品男人的天堂| 日韩精品中文字幕久久臀| 欧美视频中文字幕在线| 国外成人在线播放| 亚洲欧洲免费视频| 久久91精品国产91久久跳| 欧美精品在线视频观看| 国产91精品黑色丝袜高跟鞋| 国产成人精品电影久久久| 亚洲人成在线观看| 尤物yw午夜国产精品视频| 国产精品综合久久久| 欧美激情一区二区三区在线视频观看| 精品亚洲aⅴ在线观看| 亚洲精品国产精品国产自| 日韩久久免费电影| 91精品国产自产在线| 亚洲国产精品99| 国产欧美一区二区| 午夜剧场成人观在线视频免费观看| 国产精品你懂得| 成人综合网网址| 大胆欧美人体视频| 日韩高清不卡av| 日韩美女av在线免费观看| 日韩网站在线观看| 精品久久久精品| 久久青草福利网站| 91欧美视频网站| 2019国产精品自在线拍国产不卡| 国产视频观看一区| 亚洲自拍偷拍色图| 精品国产乱码久久久久久虫虫漫画| 亚洲欧美中文字幕| 国产在线播放不卡| 欧美色图在线视频| 91九色视频导航| 国产日韩av在线播放| 亚洲欧洲激情在线| 欧美极品xxxx| 亚洲一区二区三| 色天天综合狠狠色| 6080yy精品一区二区三区| 亚洲欧美日韩另类| 欧美成人小视频| 美日韩丰满少妇在线观看| 国产乱人伦真实精品视频| 成人综合国产精品| 成人羞羞国产免费| 国产精品自拍偷拍视频| 麻豆国产精品va在线观看不卡| 久久99国产综合精品女同| 日韩视频第一页| 狠狠躁18三区二区一区| 97超碰色婷婷| 欧美高清视频在线观看| 国产综合福利在线| 亚洲欧美日韩一区二区三区在线| 国产精品美女久久久久久免费| 91禁外国网站| 欧美日韩一区二区免费在线观看| 国产精品综合久久久| 日韩激情第一页| 日韩不卡中文字幕| 欧美激情第1页| 91超碰中文字幕久久精品| 国产欧美日韩免费看aⅴ视频| 欧美在线日韩在线| 亚洲欧美国产va在线影院| 国产一区二区丝袜高跟鞋图片| 欧美日韩国产成人在线观看| 国产精品精品国产| 国产一区二区在线免费视频| 中文日韩在线视频| 亚洲欧美综合另类中字| 国产美女高潮久久白浆| 中文字幕亚洲色图| 欧美第一黄色网| 97热在线精品视频在线观看| 亚洲精品一区二三区不卡| 韩国三级电影久久久久久| 久久久久亚洲精品国产| 亚洲电影免费观看高清完整版在线| 久久精品国产亚洲精品2020| 中文字幕在线观看亚洲| 欧美日韩国内自拍| 日本中文字幕久久看| 国产中文字幕亚洲| 国产成人在线视频| 国产精品第一视频| 久久人人爽国产| 亚洲免费电影一区| 91高清在线免费观看| 亚洲品质视频自拍网| 国产精品揄拍500视频| xxx成人少妇69| 黄色一区二区在线观看| 国产精品视频男人的天堂| 免费不卡在线观看av| 人妖精品videosex性欧美| 亚洲风情亚aⅴ在线发布| 97精品国产97久久久久久春色| 国产成人精品综合久久久| 自拍偷拍亚洲在线| 欧美极品少妇全裸体| 欧美在线视频导航| 国产精品久久精品| 国产精品av电影| 国产精品jizz在线观看麻豆| 欧美最猛性xxxxx(亚洲精品)| 国产成人精品视| 国产成人一区二区三区电影| 国产激情视频一区| 国产ts人妖一区二区三区| 粉嫩老牛aⅴ一区二区三区| 日韩视频免费中文字幕| 国产在线观看91精品一区| 色偷偷噜噜噜亚洲男人| 国产成人精品国内自产拍免费看| 亚洲精品国产品国语在线| 亚洲伊人成综合成人网| 欧美一级大片在线免费观看| 欧美极品在线播放| 久久成人一区二区| 亚洲美女久久久| 亚洲毛片一区二区| 正在播放欧美一区| 国产欧美最新羞羞视频在线观看| 亚洲成人精品视频| 日韩亚洲成人av在线| 日本精品免费一区二区三区| 欧美精品中文字幕一区| 欧美与欧洲交xxxx免费观看| 97久久精品视频| 日本成熟性欧美| 亚洲第一精品久久忘忧草社区| 韩国福利视频一区| 中文字幕亚洲一区二区三区五十路| 久久久久久有精品国产| 人人做人人澡人人爽欧美| 国产精品视频999| 国产日韩精品电影| 日韩有码在线电影| 亚洲成人av片| 成人xvideos免费视频| 国外日韩电影在线观看| 国产精品88a∨| 欧美性感美女h网站在线观看免费| 久久久久久久999精品视频| 国产精品av在线播放| 国产成人精品午夜| 国产精品h在线观看| 国产精品h片在线播放| 国产精品久久久久久一区二区| 久久99精品久久久久久琪琪| 亚洲字幕在线观看| 日本不卡视频在线播放| 亚洲成人精品视频| 久久露脸国产精品| 国产97免费视| 亚洲欧美中文另类|