2012-02-27 195 views
1

我想創建一系列按鈕。當用戶懸停在按鈕上時,我想在後臺顯示不同的圖像。 bg圖像之間的過渡應該是平滑的交叉淡入淡出。jQuery按鈕來改變背景圖片

我貼的代碼一點點的展現我的設置:http://jsfiddle.net/Rk4YG/

注:這會是不錯的選擇被停止的背景圖像 - 這是否意味着使用CSS背景圖像?

如果任何人都可以請幫我寫一些代碼來實現這個目標,或者指向一個好教程的正確方向,我會非常感激。

非常感謝您的幫助。

+0

jsfiddle代碼是一個很大的幫助。包括它+1。 – 2012-03-02 06:10:33

回答

1

這裏的東西,可以讓你開始:

HTML

我們使用HTML5數據屬性存儲每個背景圖像的名稱。稍後使用jQuery .attr()函數檢索這些內容。

<div role="main" class="mid"></div> 
<div class="btncontain"> 
    <div class="btn btn1" data-bg-img="image0.png"><a href="#">Button 1</a></div> 
    <div class="btn btn2" data-bg-img="image1.png"><a href="#">Button 2</a></div> 
    <div class="btn btn3" data-bg-img="image2.png"><a href="#">Button 3</a></div> 
    <div class="btn btn4" data-bg-img="image3.png"><a href="#">Button 4</a></div> 
    <div class="btn btn5" data-bg-img="image4.png"><a href="#">Button 5</a></div> 
    <div class="btn btn6" data-bg-img="image5.png"><a href="#">Button 6</a></div> 
    <div class="btn btn7" data-bg-img="image6.png"><a href="#">Button 7</a></div> 
    <div class="btn btn8" data-bg-img="image7.png"><a href="#">Button 8</a></div> 
    <div class="clearfix"></div> 
</div> 

CSS

.mid現在坐在按鈕後面。絕對定位是爲了獲得分層的權利。

body { padding: 0; margin:0; } 
.mid { width:100%; height: 700px; position:absolute; } 
.btncontain { width:80%; margin: 0 auto; position:absolute; } 
.btn a { width: 150px; height: 70px; background: yellow; float: left; margin: 0 30px 100px 30px; } 
.mid { background-image: url(image0.png); 

的JavaScript

jQuery的動畫功能在背景的頂部淡入div.mid。一旦它是100%不透明,那麼我們將背景圖片切換到新圖片並隱藏div.mid

$(function(){ 
    $('.btn a').parents('.btn').hover(function(){ 
     var img = $(this).attr('data-bg-img'), 
      afterFadeIn = function() { 
       $('body').css('background-image', 'url(' + img + ')'); 
       $('mid').css('opacity', 0); 
      }; 
     $('.mid') 
      .css({'background-image': 'url(' + img + ')', 'opacity': 0}) 
      .animate({ 'opacity' : 1 }, 500, afterFadeIn); 
    }); 
}); 
+0

感謝您的回覆。我剛剛在jsfiddle中用一些谷歌圖片引用代替了.png,但是懸停似乎並不奏效。有沒有可能幫助我找到問題? – Nelga 2012-03-10 14:23:58