代码之家  ›  专栏  ›  技术社区  ›  Daniel Sloof

jQuery DIV高度问题

  •  0
  • Daniel Sloof  · 技术社区  · 17 年前

    你好:)


    在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);
    });
    

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

    如果你更想看到一个实时示例,我在这里临时设置了一个页面: click me!

    非常感谢在这件事上提供任何帮助。

    2 回复  |  直到 17 年前
        1
  •  4
  •   Matt    17 年前

    将其动画化为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);
            }
        );
    }
    
        2
  •  1
  •   pgb    17 年前

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