jquery - 根据内容大小设置动画并调整 div 动态高度

标签 jquery dynamic resize jquery-animate height

有谁知道是否可以对 div 的大小进行动画调整,使其大小完全适合内容?高度必须是动态的,这意味着如果我调整浏览器窗口的大小,那么 div 的高度将会增加/减少。我已经拥有视口(viewport) 80% 的动态宽度。

这是我目前用来对容器大小调整进行动画处理的方法,调整大小部分可以工作,但动画不会在调整大小时播放。当我将高度设置为固定高度时,请说:

$(".pagecontainer").animate({
    height: '700px'
}, 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>

例如,第 1 页有大量文本,我不知道它会占据多少高度,因为高度本身是动态的,如果我加宽浏览器窗口,那么显然所需的高度会缩小。第 2 页可能只有一点文字,因此所需的高度会小得多。第 3 页有一堆图像,但我不知道适合所有图像所需的高度(这就是我问题的重点,让脚本计算需要多少高度)。

如何调整“.pagecontainer”的大小,使其高度即使在调整浏览器窗口大小时也能完全适合每个页面上的内容?例如,如果我单击 page1,则容器将放大(使用 jQuery 的 .animate() 进行动画处理),然后如果我单击 page2,则容器将缩小。

这是图像描述:/image/7bkAG.png

谢谢。

最佳答案

我没有理由计算高度 - 高度会自动为你改变。

jQuery

$('.pagecontainer>div').fadeOut(0);

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

HTML 结构

<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 class="pagecontainer">

    <div id="page1">Block One</div>
    <div id="page2"><img src="http://placehold.it/200x200" /></div>
    <div id="page3"><img src="http://placehold.it/300x400" /></div>

</div>

http://jsfiddle.net/daCrosby/tmuC2/

编辑

根据您的评论,您需要它上下动画而不是淡入和淡出。为此,请使用 animate([height:"show",speed)animate([height:"hide",speed),如下所示:

    $('.pagecontainer>div').animate({height:"hide"},500);
    $(this.getAttribute("href")).animate({height:"show"},500);

http://jsfiddle.net/daCrosby/tmuC2/1/

关于jquery - 根据内容大小设置动画并调整 div 动态高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374182/

相关文章:

javascript - 在 Angular 中从 ng-change 运行 Javascript 函数

javascript - 动态调整 Iframe 大小以与 Chrome 配合使用

java - 最大化和防止调整 JFrame 的大小?

c# - Dictionary<dynamic,dynamic> 无法访问值项。 C#

c# - 动态对象可以在一台电脑上运行,但不能在另一台电脑上运行

C,如果分配不能就地增长,则 realloc 失败

javascript - 将智能对象的比例重置为 100% 的脚本

javascript - 将 localstorage 变量发送到 PHP

jquery - 获取动态填充的选择的值

javascript - 表单构建器,例如 Zend_Form_Html 或 ExtJS Form for JQuery