【问题标题】:jQueryUI: animate parent element height on child animationjQueryUI:在子动画上为父元素高度设置动画
【发布时间】:2011-02-04 21:45:03
【问题描述】:

当我使用 jQuery UI .hide('slide', {direction:'up'}) 动画隐藏子元素时,我也想为其父元素的高度设置动画。

Here 是我所拥有的一个例子。动画看起来不太好,因为父级的高度在其子级隐藏后立即更改,而不是在进程中更改,如 jQuery .slideUp() 动画。

【问题讨论】:

    标签: javascript jquery jquery-ui jquery-animate


    【解决方案1】:

    我很快将您的 CSS 修改如下,看起来还不错。有点胡闹,它应该看起来和你想要的完全一样。

    #container{
        width:100px;
        padding:10px;
        text-align:center;
        height:auto;
    }
    
    #child{
        background-color:blue;
        border:10px solid #red;
        border-top:0px;
    }
    
    #content{
        background-color:red;
    }
    

    【讨论】:

    • 很好,但我称之为作弊:父元素动画还是一样的。我给出这个css只是一个例子,实际情况比这复杂得多,我希望我能像你一样简单地修复它。
    • 你能分享更多代码吗?确切地知道你在处理什么会更有帮助。
    【解决方案2】:

    更新: 一些调整 :) 测试:http://jsfiddle.net/inti/BG4Hk/16/

    试试这样的:

    var original_height = 0;
    
    $('#child').click(function() {
        if (!original_height) {
            original_height = $(this).height();
        }
        $(this).stop().animate({'height': 0}, 1000, function() { $(this).hide(); });
    });
    
    $('#content').click(function() {
        if (original_height) {
            $('#child').stop().show().animate({'height': original_height}, 1000);
        }
    });
    

    需要更多的工作来处理松散的问题,但这是一个开始。

    【讨论】:

    • 谢谢,但这正是.slideUp() 所做的,我想坚持使用幻灯片动画,这是我不使用.slideUp() 的唯一原因。
    • SlideUp() 有一个缺点:动画开始时,它会保持原始对象尺寸不变,并在动画完成后调整周围环境(父尺寸)。这首先是你的问题。使用动画()对象正在调整大小,周围环境会立即更新。
    • 对不起,我的意思是 jQuery .animate({'height': 0})/.slideUp() 动画与 jQuery UI .hide('slide', {direction:'up'}) 不同。同样在主题中给出的示例中,.slideUp() 的行为与.animate({'height': 0}) 完全相同,所以这从一开始就不是我的问题。
    • 另外,不知道您使用什么浏览器来查看.slideUp() 上的“缺点”,但此示例jsfiddle.net/BG4Hk/21 在 IE 7/8、FF 3.6、Chrome 7 中运行良好.
    猜你喜欢
    • 2011-12-14
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 2014-10-13
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    相关资源
    最近更新 更多