0

再会 :)

我在固定大小的 div 上同时使用 jQuery 的 animate() 不透明度和高度。
在 Firefox 中一切正常,但在 IE8 中(有和没有兼容模式,所以我假设它在 IE6 和 IE7 中会有相同的行为),动画确实显示,但是当 div 高度达到 0%, div 的高度调整为该 div 内文本的高度。
我立即做的第一件事是将溢出设置为隐藏,但它仍然给出相同的行为。

我正在使用以下功能来缓慢切换高度/不透明度:

function OpacityFadeToggle(e_trigger, e_element, speed)
{
    $(e_trigger).toggle(
        function() {
            $(e_element).animate({ 
                opacity:    0.0,
                height:     "0px"
            }, speed);
        },
        function() {
            $(e_element).animate({
                opacity:    1.0,
                height:     "500px"
            }, speed);
        }
    );
}

$(function() {
    OpacityFadeToggle("a#a2", "div#b1", 1000);
});

我的“b1” div 的样式如下:

div#b1 {
    color:      #ffffff;
    background-color:   #000000;
    overflow:       hidden;
    width:      600px;
    height:     500px;
    padding:        0px;
    margin:     0px;
    display:        block;
}

如果你想看一个活生生的例子,我在这里临时设置了一个页面:点击我!

非常感谢您对此事的任何帮助。

4

2 回答 2

4

将其设置为 1px,然后在动画完成后隐藏 div 怎么样?此外,请确保在从 1px 动画到 500px 之前再次显示 div。

function OpacityFadeToggle(e_trigger, e_element, speed)
{
    $(e_trigger).toggle(
        function() {
                $(e_element).animate({ 
                        opacity:        0.0,
                        height:         "1px"
                }, speed).hide();
        },
        function() {
                $(e_element).show().animate({
                        opacity:        1.0,
                        height:         "500px"
                }, speed);
        }
    );
}
于 2009-04-18T15:43:45.440 回答
1

您可以尝试向 jQuery 的 animate 调用添加回调,并在回调中通过更改其 display 属性来隐藏 div。

于 2009-04-18T15:43:07.503 回答