我正在学习各种各样的东西。我只使用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