代码之家  ›  专栏  ›  技术社区  ›  Eric

在使用jQuery的slideUp时,如何防止宽度改变?

  •  0
  • Eric  · 技术社区  · 16 年前

    我这里有一个测试用例:

    http://www.jsfiddle.net/kPBbb/

    .content ,的 .wrapper .内容 是 display: none .包装纸 表现得好像 动画结束后仍然在那里,保持初始大小。

    已经 float: left 不 包括在动画之前读取长方体的宽度,然后在动画之后重新应用它。

    有简单的解决方法吗?

    4 回复  |  直到 16 年前
        1
  •  1
  •   Squirkle    16 年前

    或者要使其动态化,请尝试以下操作:

    var contentWidth = $('.content').width();
    
    $('.header').width(contentWidth);
    
        2
  •  0
  •   KLee1    16 年前

    如果指定包装的宽度,如果滑动切换包装的子包装,它的大小将保持不变。

    .wrapper{
        width: 200px;
    }
    

    我不确定是否有更好/更通用的解决方案来解决这个问题。

        3
  •  0
  •   Slevin    16 年前

    visibility:hidden 然后 visibility:visible 显示信息。

    display:none
    

    none

    visibility:hidden
    

    可见性允许数据仍然存储在页面上的相应位置,但只是不可见。

    试试这个,看看这对你的问题是否有帮助。

        4
  •  0
  •   vinhboy    16 年前

    $('.wrapper').each(function() {
      var wrapper = this;
      $('.header', wrapper).click(function() {
        $(this).css('width',$(this).width());
        $('.content', wrapper).slideToggle();
      });
    });​
    

    但也许你可以这样做:

    $('.wrapper').each(function() {
        var wrapper = this;
        $('.header', wrapper).click(function() {
            $('.content', wrapper).slideToggle('slow',function(){
                $('.content', wrapper).show();
                $('.content', wrapper).css('visibility','hidden');
                $('.content', wrapper).css('height','0px');
            });
        });
    });