【问题标题】:jQuery Use animate() to animate height of div to hide/reveal content insidejQuery 使用 animate() 为 div 的高度设置动画以隐藏/显示里面的内容
【发布时间】:2013-04-03 04:57:45
【问题描述】:

我正在尝试为 div 的高度设置动画以隐藏或显示其中的内容。使用 animate() 是获取我想要的动画的最方便的方法,因为您可以指定一个高度来为其设置动画。但是,我试图获得使用 slideUp() 或 slideDown() 的功能。当使用 animate() 作为高度时,div id 内的内容会根据您是缩小还是扩大高度而向上或向下推...这不是我想要的。我希望 div 向上滑动并隐藏里面的内容或向下滑动并显示它(几乎就像车库门打开或关闭并显示或隐藏里面的内容一样,不会以任何方式影响它,就好像它有一个固定的位置一样) .有没有一种干净的方法可以做到这一点?我会继续使用 slideUp() 和 slideDown() 但我需要能够指定要增长到的高度和要停止的高度。任何帮助表示赞赏。

这是一个完整的工作示例: http://jsfiddle.net/8XRqg/

这是我尝试用 jQuery 做的一个版本。我完全按照它的功能需要它,只是我希望内容受到 div 缩小的影响。此外,我现在在顶部和底部之间切换时内容淡出。一旦功能是我想要的,我想摆脱它。

 $(document).ready(function() 
    {
        var top = $("#top");
        var bottom = $("#bottom");
        var image = $(".image");
        var content = $(".content");
        var topOpen = false;
        var bottomOpen = false;

        content.hide();

        top.click(function()
        {
            if(topOpen == false)
            {   
                var thisContent = $(this).children(".content");
                topOpen = true;
                bottomOpen = false;
                content.fadeOut(250);
                thisContent.css({ marginTop : (thisContent.height()/2) * -1 });

                image.fadeOut("fast", function()
                {
                    thisContent.delay(500).fadeIn(250);
                    top.animate({ height : 190 });
                    bottom.animate({ height : 10 });
                });
            }
        });

        bottom.click(function()
        {   
            if(bottomOpen == false)
            {
                var thisContent = $(this).children(".content");
                bottomOpen = true;
                topOpen = false;
                content.fadeOut(250);
                thisContent.css({ marginTop : (thisContent.height()/2) * -1 });

                image.fadeOut("fast", function()
                {   
                    thisContent.delay(500).fadeIn(250);
                    bottom.animate({ height : 190 });
                    top.animate({ height : 10 });
                });
            }
        });

    });

【问题讨论】:

  • 在这个小游戏中,你如何回到开始屏幕?
  • 在 slideUp()/slideDown() 动画期间内容受到影响的程度(与您的情况类似)由应用于所包含元素的 CSS 决定,而不是由执行动画。
  • 基本上,确保所包含的元素没有一个高度或位置取决于容器的高度。

标签: jquery jquery-animate slidedown slideup


【解决方案1】:

请参考以下网址寻求帮助。我觉得你正在寻找这样的东西。

http://jqueryui.com/accordion/#default

【讨论】:

  • 这是您的主观建议,在其中没有任何一部分您试图回答确切的问题。最适合改为问题评论
  • 那不是我在链接中想要做的。如果您在 div B 上使用 slideUp(),我正在尝试做一些事情,就好像您在 div B 中有一个 div A,div A 将被隐藏但根本不会移动。
  • @user2227738 我仍然无法理解你。如果我看到你的代码,你有 2 个块“顶部”和“底部”,每个块都有一个图像和一些文本行。您正在查看的功能/体验是什么?
  • 我试图让它完全按照我想要的方式运行,如果在打开 div 后单击其中一个(顶部或底部)(当你可以看到内容)而不是让内容与其父 div 一起缩小,我希望父 div 对内容进行动画处理(现在内容与父 div 一起动画并缩小)。我希望内容保持原位,并让父 div 在其上滑动以显示它(如果打开)或隐藏它(如果关闭)。
  • @user2227738 请在这里找到小提琴。我想这有帮助。 jsfiddle.net/ardeezstyle/DaYx5>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
相关资源
最近更新 更多