0

我认为有一种简单的方法可以在动画调整大小期间使容器高度流动,但如果是这样,我已经忘记了。在我以编程方式执行之前,我想我会在这里测试一下我的运气。

这个想法是底部<hr />应该像动画一样优雅地向上/向下移动#content,而不是在动画之后捕捉到位 -这是由于#container未调整大小

见小提琴

HTML:

<button id="trigger">trigger</button>
<hr />
<div id="container">
    <div id="content">foo
        <br />foo
        <br />foo
        <br />foo
        <br />foo
        <br />
    </div>
</div>
<hr />

JS:

$('#trigger').click(function () {
    var $content = $('#content');
    if (!$content.hasClass('hidden')) {
        $content.stop(true, true).hide('drop', {
            easing: 'easeInQuad',
            direction: 'up'
        }, 'slow');
        $content.addClass('hidden');
    } else {
        $content.stop(true, true).show('drop', {
            easing: 'easeInQuad',
            direction: 'up'
        }, 'slow');
        $content.removeClass('hidden');
    }
});
4

2 回答 2

1

你可以用slideToggle调整你的容器大小来达到这个效果吗?

jQuery

$('#trigger').on('click', function() {
  var $content = $('#content');
  $content.slideToggle(1000);
});

JSFiddle 示例。

于 2013-08-26T23:10:39.480 回答
0

小提琴

以为会有一个CSS解决方案。相反,它看起来像动画作品;然而,这是一个简单的滑动/淡入淡出,并且不使用drop

$('#trigger').click(function () {
    var $content = $('#content');
    if (!$content.hasClass('hidden')) {
        $content.stop(true,true).animate({height:'hide',opacity:'hide'},'slow','easeInQuad');
        $content.addClass('hidden');
    } else {
        $content.stop(true,true).animate({height:'show',opacity:'show'},'slow','easeInQuad');
        $content.removeClass('hidden');
    }
});
于 2013-08-27T03:15:47.097 回答