我正在學習各種各樣的東西。我只使用jQuery - 沒有UI,沒有UI手風琴,沒有UI效果 - 並獲得了我想要的滑下效果。不確定這種視覺效果的術語。 (我認爲這是jQuery的一半挑戰 - 我稱之爲各種效果)。我想也許有些人稱之爲「切換百葉窗」。
點擊此處,查看效果:http://jsbin.com/ogape
這裏的HTML片段
<div id="div0">
<p id="intro"><a href="#" class='expander'>+</a> Introduction</p>
<div class='indented' style='display:none'>
<p >
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer
vulputate, nibh non rhoncus euismod, erat odio pellentesque lacus,
sit amet convallis mi augue et odio. Phasellus cursus urna facilisis quam.
</p>
<p> Quisque pharetra lacus quis sapien. Duis
id est non wisi sagittis adipiscing. Nulla facilisi. Etiam quam erat,
lobortis eu, facilisis nec, blandit hendrerit, metus. Fusce
hendrerit. Nunc magna libero, sollicitudin non, vulputate non, ornare
id, nulla. Suspendisse potenti. Nullam in mauris.
</p>
</div>
</div>
這是jQuery代碼:
var slideOut = function(element){
var parent = $(element).parent().parent(); // outer div
var dList = parent.children("div"); // inner div, all siblings of the <a>
dList.animate({opacity: 'toggle', height: 'toggle'}, 'slow');
};
$(document).ready(function() {
$('div p a[href="#"]').click(function() { slideOut(this); });
});
這滑出式()函數稍微從什麼簡化它實際上是。它還交換+和 - 在實際代碼擴展按鈕,這使得它更復雜一點:
var slideOut = function(element){
var parent = $(element).parent().parent(); // outer div
var dList = parent.children("div"); // inner div, all siblings of the <a>
dList.animate({opacity: 'toggle', height: 'toggle'}, 'slow');
// swap characters on the expander "button"
var o = dList.css("opacity");
// dash is narrower than +, so we must compensate
if (o==1) {
$(element).html("+")
.css("padding-left", "1px")
.css("padding-right", "1px");
} else {
$(element).html("-")
.css("padding-left", "3px")
.css("padding-right", "3px");
}
};
您可以在上面提到的現場演示鏈接看到完整的HTML/JS代碼。
我不知道的關鍵是可以通過調用帶有「切換」的動畫生成動畫高度。
是基於jQuery的slideToggle?還是有一個單獨的模塊或插件? – Cheeso 2009-12-16 05:03:05
slideToggle在基礎jQuery中,這很好。但是,我在IE中收到了一些奇怪的動畫文物。當div出現時,在幻燈片的末尾有一個跳躍步驟。我做''時看不到這個。animate({height:'toggle'})' – Cheeso 2009-12-16 05:10:21
如果工作正常,您也可以這樣做。無論如何,我相信它就是這樣。 – 2009-12-16 05:15:15