【问题标题】:combining slideToggle successfully with min-height将 slideToggle 与 min-height 成功结合
【发布时间】:2013-03-19 09:32:56
【问题描述】:

我目前在我的网站顶部有一个很好的隐藏部分,点击后会向下滑动。动画与 slideToggle 配合得很好,但我也希望 div 至少覆盖窗口高度。

我设法将窗口高度设置为变量并更改 css 以反映这一点,但将其与 slideToggle 结合会使动画跳动。

jQuery(document).ready(function($) {
  var win = $(window).height();
  $("#hidden").css("min-height", win);
  $("a#toggle").click(function() {
   var txt = $("#hidden").is(':visible') ? 'Show' : 'Hide';
   $("#toggle").text(txt);
   $("#hidden").slideToggle(500);
  });
});

这是一个小提琴http://jsfiddle.net/HZACf/

如果删除 jQuery 的前两行,它会正常滑动。

感谢您的帮助!

【问题讨论】:

    标签: jquery slidetoggle css


    【解决方案1】:

    试试animate

    jQuery(document).ready(function ($) {
        var $hidden = $("#hidden"),
        currentHeight = $hidden.height(),
        newHeight = $(window).height();
    
        newHeight = (currentHeight > newHeight) ? currentHeight : newHeight;
    
        $("#hidden").css("height", newHeight);
    
        $("a#toggle").click(function () {
            var txt = $("#hidden").is(':visible') ? 'Show' : 'Hide';
            $("#toggle").text(txt);
            $("#hidden").animate({
                height : "toggle"
            }, 500);
        });
    });
    

    我使用了animate,但您可以使用slideToggle,因为我们现在只处理元素的height

    小提琴here

    【讨论】:

    • 感谢@darshanags,它可以工作,但几乎与旧方法一样生涩。在小小提琴示例中很难看到,但动画是在两个不同的部分中完成的,因此效果不佳。无论如何在切换发生之前设置最小高度?
    • 为什么要使用min-height而不是height
    • 如果内容超过窗口高度
    • 哪些内容? #hidden div 中的内容还是页面内容?
    • #hidden div 中的内容。这是一种较大的形式,因此在较小的屏幕上,可能会比窗口高度长。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 2013-07-31
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 2013-07-07
    相关资源
    最近更新 更多