我一直在嘗試學習一些關於jQuery的.animate()
函數,並且我已經得到了一些動畫,但是我還沒有能夠以我想要的方式爲我的表設置動畫。在jQuery中,如何在display none和display table(或其等效視圖)之間創建動畫?
這裏的表HTML:
<div class="topSectionContainer">
<div id="dropDownArrow">►</div><span class="editLabelTitle">Page Settings</span>
<table class="topSectionTable">
<tr>
<td class="pageSettingsContainer"></td>
<td class="fileBoxContainer">@Html.Raw(ContentGenerator.getFileBox("Tourism"))</td>
</tr>
</table>
</div>
我想獲得以下功能:
- 的
table.topSectionTable
開始了,就好像它有display: none
分配。 - 當
div#dropDownArrow
被點擊時,它應該(當動畫時)出現表格正在高度增長(高度屬性是否實際調整或不),並揭示表格內容隨着展開。 - 一旦再次點擊
div#dropDownArrow
,它應該反轉動畫,從而隱藏表格並縮小其高度(或其外觀)。
我已經使用了一些簡單的代碼,這不具有動畫(jQuery的):
$("#dropDownArrow").toggle(function() {
$(".topSectionTable").css("display", "table");
$("#dropDownArrow").html("▼");
},
function() {
$(".topSectionTable").css("display", "none");
$("#dropDownArrow").html("►");
});
事情我已經嘗試:
- 使用jQuery的
.animate()
與顯示器屬性。 我不確定在這裏失敗的原因,因爲顯示屬性中的實際更改沒有顯示,但我猜想對display
屬性的更改不支持jQuery的.animate()
。 - 我也嘗試設置
table.topSectionTable
的CSS規則以反映overflow: hidden;
和height: 0px;
,然後僅動畫height屬性。 在這裏,高度動畫是成功的,然而,td.fileBoxContainer
內容顯示的高度是否是0(即使高度膨脹,在div#dropDownArrow
元素的clickings合同。
我我知道有一種方法,而且我想在jQuery中這樣做,而不僅僅是CSS3,因爲如果可能的話,我還想在IE8中保留這個功能,並且我知道CSS3沒有這個機會。
更新 - 試圖用高度爲0和溢流隱藏,PLUS JQUERY ANIMATE
jQuery代碼:
$("#dropDownArrow").toggle(function() {
$(".topSectionTable").animate({
height: 100}, 1000);
$("#dropDownArrow").html("▼");
},
function() {
$(".topSectionTable").animate({
height: 0}, 1000);
$("#dropDownArrow").html("►");
});
CSS:
table.topSectionTable
{
height: 0;
overflow: hidden;
}
td.pageSettingsContainer
{
}
td.fileBoxContainer
{
}
而HTML與a相同波夫
我的C#getFileBox方法:
public static string getFileBox (string location)
{
string content = "";
string[] files = Directory.GetFiles(HttpContext.Current.Server.MapPath("~/CMS Files/" + location + "/"));
foreach (var file in files)
{
content += Path.GetFileName(file);
content += "<br/>";
}
return content;
}
[顯示上的轉換:屬性]的可能重複(http://stackoverflow.com/questions/3331353/transi tions-on-the-display-property) – cimmanon
無論你是否被'@ Html.Raw(ContentGenerator.getFileBox(「Tourism」))吐出'都不會改變風格嗎? '高度:0;溢出:隱藏;'應該工作。 – Snuffleupagus
@Snuffleupagus是的,它表現得好像這應該起作用,然而,沒有* style *變化被c#方法吐出。所有它(現在)是由標準'
'元素分隔的某個目錄中的文件名列表。即使如此,它不會隱藏起來(也不會隱藏)。 – VoidKing