jQuery slideDown与jQuery UI .show(’slide’)

我正在尝试利用jQuery的内置效果function来创建一个从导航栏后面滑出的“抽屉”,将其下方的内容推出。

如果我使用$('#drawer').slideDown() ,内容将被推开,但内容实际上并没有“向下滑动”。 揭示内容更像是一种擦拭。

如果我使用$('#drawer').show('slide',{direction:'up'}) ,内容会正确地向下滑动,但元素下面的所有内容都会在效果发生之前跳出来。

有没有办法结合这两者中最好的一个来复制我正在寻找的效果:一个抽出的抽屉,将其下面的内容推开?

我已经研究过jQuery UI的.animate()函数,但文档没有用。 我粗暴地利用它的努力充满了失败。

并且,如果有人问,抱歉,我不能展示一个例子,但我们希望它的function类似于jQuery Drawer插件:

http://lib.metatype.jp/jquery_drawer/sample.html

但是这个插件并不能完全满足我们的要求,否则我只会使用它(不使用项目符号列表或AJAX内容)。 然而,那就是我们想要的效果。

更新:我也通过jQuery Drawer插件尝试了这部分代码,但它根本没有动画:

 $('#drawer').css({ marginTop: $('#drawer').height() * -1 }).animate({ marginTop: 0 }); 

为了澄清,这也是在一个函数OpenDrawer()中调用的,这个函数被调用:

 $(document).ready(function() { OpenDrawer(); }); 

因为默认情况下它会在页面加载时加载。

我相信你正在寻找更像’盲目’的效果:

 $('#drawer').show('blind'); 

奇怪的是,$ .fn.slideDown()和$ .fn.show(’slide’)的运作方式并不相同,而是“盲目”。 ‘slide’创建一个占位符大小的对象,然后滑入视图框,而盲目调整元素的高度或宽度,直到它扩展到正确的大小(溢出设置为隐藏)。 实际上,效果名称是正确的,但由于遗留名称$ .fn.slideDown()而存在一些混淆。

这是一个迟到的post,但我遇到了这个问题,并设法使一些有用的东西。

我不是jQuery或Javascript Guru,所以不要对这个快速解决方案感到苛刻。

这是一个小例子。 效果的顺序必须得到尊重。 您可以使用动画时间长度来获得非常好的绘图效果。

我只是在FF 3.6上快速测试了它

您可以在Google代码游乐场上试用该示例。 http://code.google.com/apis/ajax/playground/#jqueryui

单击编辑html,粘贴代码并单击运行代码。 这个例子应该有效

希望它会有所帮助

          
I want to be pushed nicely

您在问题更新中使用的JavaScript有效,但它需要对包含您的内容的元素进行操作,而不是对内容本身进行操作。

要查看此操作, #drawer使用另一个div包围元素#drawer

 
...

并为容器设置动画:

 $('#container') .css({ marginTop: $('#container').height() * -1 }) .animate({ marginTop: 0 }); 

是的,它就像手风琴的行为,除了你也可以滑动它。 我已经使用此function来创建我认为您正在寻找的东西。

$('#drawer').slideDown('slow');

通过改变速度,您可以获得不同的滑动速度,以便按照您想要的方式显示。 现在,即使你有抽屉元素,你需要一个最初隐藏的容器,它将被滑动。 假设您有一个id为“drawer”的按钮,以及一个id为“myDrawerContent”的容器。 你会做以下,

 $('#drawer').click(function() { $('#myDrawerContent').slideDown('slow'); } 
 $('#drw_loader').animate({ height: $('#drw_ajax').height() }, function () { $('#drw_loader').fadeOut(function () { $('#drw_ajax').fadeIn(); }); }); 

希望这可以帮助。

都会

我一直在寻找这个(看似简单的)效果的体面实现,这是我发现的最好的一个: http : //eric.muyser.com/work/jquery/drawer/example/

有关更多信息/代码/ etc,请参阅此处: http : //eric.muyser.com/blog/post/jquery-plugin-jdrawer

然而,它仍然看起来有点过分,需要归结为一个可以通过.show()调用/应用的裸本动画插件,这正是你期望在jQuery / UI中作为标准在第一名……但遗憾的是……