Javascript / jQuery动画到动态高度?

时间:2013-03-13 18:41:19

标签: jquery resize jquery-animate height

有谁知道为什么这个动画很好:

function setContainerHeight() {
    $(".pagecontainer").animate({
        height: '700px'
    }, 500);
}

即。一个固定的高度,但这根本没有动画?

function setContainerHeight() {
    $(".pagecontainer").animate({
        height: 'auto'
    }, 500);
}

它仍然会调整为自动调整大小,但没有动画,只需按下它即可。

我的代码:

JS:

<script>

    function setContainerHeight() {
        $(".pagecontainer").animate({
            height: 'auto'
        }, 500);
    }

    $('.link').on('click', function(e){
        $('.pagecontainer>div').fadeOut(0);
        setContainerHeight();
        $(this.getAttribute("href")).fadeIn();
    });

</script>

CSS:

.pagecontainer {
min-height:450px;
width:80%;
min-width:800px;
padding:50px 0;
margin: 0 auto;
}
.pagecontainer>div{
display: none; /*wait until page needs to be faded in*/
padding-left:50px;
padding-right:50px;
position:relative;
}

HTML:

<div class="pagecontainer">

    <a href="#page1" class="link">page 1</a>
    <a href="#page2" class="link">page 2</a>
    <a href="#page3" class="link">page 3</a>

    <div id="page1">TONS OF TEXT HERE</div>

    <div id="page2">A BIT OF TEXT HERE</div>

    <div id="page3">BUNCH OF IMAGES</div>

</div>

有不同的div淡入/淡出,每个都需要不同的高度。页面的宽度也是动态的,但不需要动画,只需用视口拉伸/缩小。

感谢。

4 个答案:

答案 0 :(得分:7)

DEMO http://jsfiddle.net/zbB3Q/

Animate不知道结束高度。你需要得到它然后动画,但要做到这一点,你必须快速设置高度并返回到动画之前的状态。

function setContainerHeight() {
    var heightnow=$(".pagecontainer").height();
    var heightfull=$(".pagecontainer").css({height:'auto'}).height();

    $(".pagecontainer").css({height:heightnow}).animate({
        height: heightfull
    }, 500);
}

答案 1 :(得分:2)

根据经验,我遇到了同样的问题,但你无法动画到auto。但是,您可以预先获得容器高度,然后设置动画。例如。

function setContainerHeight() {
    newHeight = $('.pagecontainer').height();
    $(".pagecontainer").animate({
        height: newHeight
    }, 500);
}

答案 2 :(得分:0)

这里的派对有点晚了,但我的一些代码中遇到了完全相同的问题。我写了一个小小的jQuery插件来解决这个问题 - 如果你仍然需要解决这个问题,我可以使用here

答案 3 :(得分:0)

我制作了一个处理这个问题的小插件 - 应该相当简单,基于Darcy Clarke发布的here方法,以及一些(imo)非常必要的改进。只需即插即用jQuery:

https://github.com/azaslavsky/jQuery-Animate-Auto-Plugin