2014-10-31 70 views
0

我試圖在單擊菜單按鈕時,將下拉菜單div的高度從0到250px設置爲動畫。我嘗試使用jQuery。單擊按鈕時動畫div的高度

這包括在我的HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> 
<script src="scripts.js"></script> 

菜單按鈕是一個跨度:

<span id="menu_btn" name="menu_button">MENU</span> 

這是下拉菜單:

<div id="menu_dropdown"> 
    <ul> 
     <li><a id="on" href="#">HOME</a></li> 
     <!-- more buttons --> 
</div> 

這是jQuery:

$("#menu_btn").toggle(function(){ 
    $("#menu_dropdown").animate({'height': '250px'}, 100); 
}, function(){ 
    $("#menu_dropdown").animate({'height': '0px'}, 100); 
}); 

但它不起作用。爲什麼是這樣?

+2

現在使用CSS3轉換要容易得多。您只需添加和刪除類,並讓CSS完成繁重的工作。 http://css-tricks.com/almanac/properties/t/transition/ – 2014-10-31 21:16:36

回答

2

我想這是你想要什麼:

$("#menu_btn").on('click', function() { 
    $("#menu_dropdown").slideToggle(100); 
}); 

改變高度可能不會工作,因爲它不會阻止對所顯示的內容。 slideToggle()更改display屬性,這將工作。

參見http://api.jquery.com/slideToggle/

0

嘗試在你的動畫調用,而不是像下面使用匿名函數。然後,你可以顯式地獲取你想要改變高度的元素,並使用jquery的.height(HEIGHT)或.css(「height」,HEIGHT);

$("#menu_btn").toggle(function(){ 
    $("#menu_dropdown").animate(function(){$("#menu_dropdown").css("height", "250px");}, 100); 
}, function(){ 
    $("#menu_dropdown").animate(function(){$("#menu_dropdown").css("height", "0px");}, 100); 
}); 

此外,您沒有顯示它,所以只需確保切換處於單擊或鼠標懸停處理函數。否則它不會對你有任何好處。

+0

你是什麼意思'..確保切換是在點擊或鼠標懸停處理函數'? – user2397282 2014-10-31 21:26:44

+0

確保它與.click()或.on(「click」,FUNCTION)或onclick =「FUNCTION」[html]綁定。 您可以切換的東西,但只有當您的切換綁定到一個事件,否則它不會做任何事情。 – 2014-10-31 21:55:26