所以我一直在做一些搜索,我會繼續看,但我想現在是時候把我的問題提交給SO社區。多個元素的jQuery動畫/ slideUp/slideDown
我正在研究一個小項目,涉及一個帶可變高度的固定標題。的基本結構是這樣:
<header>
//any amount of elements
//meaning this will have varying heights
//I'll also be able to "open" and "close" this header
//using slideUp and slideDown (because the end height varies I don't want to use animate)
</header>
<section>
//body content
</section>
作爲正常報頭(即,非CSS「position'ed)此就可以了。這將在html流程的正常情況下,它會與它下面的內容進行交互。當標題滑向下面的部分時,它也會滑落,當它向上滑動時,反過來會發生。它的工作原理如下http://jsfiddle.net/byazaki/7FcJF/
現在,如果標題上的位置是固定的,則下面的部分不會受到它的上下移動影響,因此引入了一個'header-spacer'元素來取代它的位置。
<header>
//any amount of elements
</header>
<header spacer>
//in theory this would resize with the
//header as it slides up and down to mimic
//its effect on the other elements in the flow.
</header spacer>
<section>
//body content
</section>
這聽起來很簡單吧?一般來說,如果我知道我的球頭在打開的時候會有多大,當它關閉的時候會有多小。爲了簡單起見,我們只是說它在關閉時是0,所以現在我只需要擔心它何時打開。
對不起,很長的介紹,但這導致我回到我的初始點:如果我不知道我的標題的目標「高度」如何動畫我的spacer?做.slideDown不起作用。
一個解決方案,我想的是做這樣的事情:
function setSpacer() = { spacer.css('height', header.height())};
var interval = setInterval(setSpacer, 10);
header.slideDown(500, function(){
clearInterval(interval);
});
很抱歉,如果有語法錯誤之類的東西只是想畫的畫......基本上我開始設置間隔高度到標題高度每10毫秒,然後當標題完成動畫時清除間隔。
我還沒有實現,因爲我很好奇,如果有一個更優雅的解決方案來解決我的問題,或者甚至可以做一些我不知道的w/jQuery動畫分支?
note: 另一個想法是編寫一個擴展slideUp()/ slideDown()/ animate()類的插件,以獲取包含1個或多個html元素的參數並鏡像目標對象的動畫。
任何意見或反饋將是非常歡迎的,謝謝:d
ahhhhh這對於.slideUp()/。slideDown()來說是一個很棒的解決方案......我從來沒有想過通過暫時放下一個類來抓住「wholeHeight」。我意識到slideUp/slideDown沒有明確設置高度的方法,因爲它們的功能是顯示/隱藏東西......我只是沒有意識到我可以將多個元素傳遞給slideDown/slideUp。在那種情況下,我們甚至需要'wholeHeight'變量嗎? – Brodie 2012-04-04 15:58:22
@Brodie我加了'wholeHeight'來告訴你開始時可以有一個固定的高度,然後你可以讓內容動畫到全高,就好像它是「height:auto」一樣。無論如何,這本質上就是幻燈片/幻燈片所做的事情。如果您想顯示一部分內容,然後添加一個但僅顯示完整內容(基於內容),這會非常有用。 – ShadowScripter 2012-04-04 16:06:02