筆者今天要介紹給各位的是有別於淡入淡出式的切換影像中的純超連結選單的效果,是利用了縮圖的方式來讓瀏覽者能更直覺性關看。
先來看含有小圖的 ul 清單及 HTML 內容:
檢視原始碼 HTML
1 2 3 4 5 6 7 8 9 | <body> <div class="abgne-block-20110806"> <ul> <li><a href="http://abgne.tw"><img src="images/P1010274.jpg" /></a></li> <li><a href="#"><img src="images/P1010290.jpg" /></a></li> <li><a href="#"><img src="images/P1010294.jpg" /></a></li> </ul> </div> </body> |
當然免不了還是要用 CSS 來裝飾:
檢視原始碼 CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | .abgne-block-20110806 { width: 640px; height: 380px; border: 1px solid #333; background: #ccc; position: relative; overflow: hidden; } .abgne-block-20110806 * { margin: 0; padding: 0; border: none; } .abgne-block-20110806 ul, .abgne-block-20110806 li { list-style: none; } .abgne-block-20110806 ul { position: absolute; right: 10px; bottom: 15px; z-index: 9999; } .abgne-block-20110806 li { float: left; margin-left: 5px; } .abgne-block-20110806 li a { display: block; width: 50px; height: 50px; border: 1px solid #fff; } .abgne-block-20110806 li a:hover { border: 1px solid #f9f; } .abgne-block-20110806 li a img { border: none; } |
當準備好 HTML 及 CSS 後,就能看到大概的畫面的:
需要注意的地方在於小圖片及大圖片的檔案關聯,假設小圖片檔名 P1010274.jpg 的話,那麼大圖片的檔名要存成 P1010274-normal.jpg 才行。接下來大圖片及切換的動作就都由 jQuery 來完成它囉:
檢視原始碼 JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | $(function(){ // 取得 .abgne-block-20110806 及其子孫元素 li var $block = $('.abgne-block-20110806'), $li = $block.find('li'); // 從 li 中取出超連結及大圖片來產生新的內容 var _html = ''; $li.each(function(){ var $this = $(this), $a = $this.find('a'), $thumb = $a.find('img') _html += '<a href="' + $a.attr('href') + '"><img src="' + $thumb.attr('src').replace(/(\.[^\.]+)$/, '-normal$1') + '" /></a>'; }); // 把產生的新內容加到 $block 中 // 並先隱藏除了第一個以外的元素 var $link = $block.append(_html).children('a').css({ position: 'absolute', opacity: 0 }).eq(0).animate({ opacity: 1, zIndex: 10 }).end(); // 當 $li 點擊時 $li.click(function(){ // 顯示相對索引的 $link 並把其它的設為透明 $link.eq($(this).index()).stop().animate({ opacity: 1, zIndex: 10 }).siblings('a').stop().animate({ opacity: 0, zIndex: 0 }); return false; }); }); |
經過 jQuery 的加工後就,噹噹~
是不是效果還不錯呢!當點擊到大圖片時,可是會有超連結的效果的唷。若還想要把超連結的虛線框取消掉的話,再多補上一句:
檢視原始碼 JavaScript
1 2 3 | $block.find('a').focus(function(){ this.blur(); }); |
不過因為區塊的寬度是有限的,所以清單的數量要特別注意一下,以免縮圖超出整個區塊了。
真不錯的教學
請問,如何加入輪播功能??
使用計時器就能讓它自動輪播了。
已ok,謝謝!!
您好
請問我把整個div放入一個100%td是置中的table裡面大圖就會跑掉
該怎麼解決呢
謝謝
要看到你的檔案內容才知道是那邊跑掉..!!
簡單卻有質感的效果
這個範例好像在ie6不能執行耶~~
有什麼問題嗎?這範例我在上課時有教過, 當時的瀏覽器就是 IE6 了, 若有問題當時就會馬上發現哩!
男大師~~
套上程式之後只出現小圖,大圖無法出來..
這要看你的程式才知道你是那邊有漏掉, 像是大圖片存在嗎?檔案名稱對嗎?
男大師~~
如果想要小張的圖顯現時 是依照大張的圖等比例縮放的話 這樣就只需要載入一張圖就好了
有這樣的辦法嗎??
是可以縮啦, 但 html 的縮圖也許你會不滿意的
請問一下
小弟是新手
這個功能的計時器該怎麼寫呢?
試了好幾次都無法成功
已收到您的來信並回覆您了~
我也遇到這樣的問題!!不知可不可以幫幫我:)
上列進階範例中有提供..
您好,
請問一下~
可以在把小圖放左邊~
大圖在右邊換嗎~~
像是2個區塊這樣@@
這是可以的, 如果不需要淡出淡入的話, 就只要點小圖, 然後去修改大圖的 src 就可以了。
這幾天有時間再弄一個超簡單版的XD