如何为一块内容制作动画?

时间:2013-05-21 16:29:22

标签: jquery css css3 animation twitter-bootstrap

我正在使用 twitter-bootstrap 框架。

我正在尝试为页面的一部分设置动画。首先输入此 fiddle ,在下面的代码之前,我将解释这个想法。

HTML

<div id="bluecont" class="container">
    <div class="row">
        <div class="span8 offset2">
             <h1>Hello stackoverflow!</h1>
            <button id="clickhide">Show span</button>
        </div>
        <div id="spanhide" class="span8 offset2">
             <h2>Thanks for the help!</h2>
        </div>
    </div>
</div>
<div id="redcont" class="container">
    <div class="row">
        <div class="span8 offset2">
             <h3>This would be the rest content of the page</h3>
        </div>
    </div>
</div>

JS

$(document).ready(function () {
    $("#spanhide").hide();

    $("#clickhide").click(function () {
        var caption = $(this).text();

        if (caption == "Show span") {
            $("#spanhide").fadeIn("slow");
            $(this).text("Hide span");
        } else {
            $("#spanhide").fadeOut("slow");
            $(this).text("Show span");
        }
    });
});

CSS

.span8 {
    background: green;
    padding: 20px
}
#bluecont {
    background:blue;
    padding: 20px
}
#spanhide {
    background: yellow;
}
#redcont {
    background: red;
    padding: 20px
}
#clickhide {
    width: 100%;
}

嗯,正如你在那里看到的那样,当我按下按钮时,我显示的是一个隐藏的范围。但是当它看起来红色的容器直接下降。我正在尝试的是稍微移位它,直到隐藏的跨度有空间出现。当我想要隐藏它时也一样。

可能正在使用CSS过渡?或jQuery的.animate()函数?我不知道......我正在寻找最好的方法,所以任何帮助或建议都会受到赞赏。

如果您需要更多信息,请告诉我,我会修改帖子。

3 个答案:

答案 0 :(得分:3)

here is the code demo

$(document).ready(function () {
$("#spanhide").hide();

$("#clickhide").click(function () {
    var caption = $(this).text();

    if (caption == "Show span") {
        $("#spanhide").css({opacity:0}).slideDown("slow").animate({opacity:1});
        $(this).text("Hide span");
    } else {
        $("#spanhide").animate({opacity:0}).slideUp("slow");
        $(this).text("Show span");
    }
});

});

答案 1 :(得分:0)

Animate会很好,只需先将span的高度添加到容器div和animate中。

$(document).ready(function () {
        $("#spanhide").hide();

        $("#clickhide").click(function () {
            var caption = $(this).text();

            if (caption == "Show span") {

                $('.row').animate({
                    height:'+='+ ($('#spanhide').height() + 20)+'px'  
                });

                $("#spanhide").fadeIn("slow");
                $(this).text("Hide span");
            } else {
                $("#spanhide").fadeOut("slow");
                $(this).text("Show span");
            }
        });

    });

答案 2 :(得分:0)

最佳解决方案是使用.slideToggle()功能。

这是一个演示a: http://jsfiddle.net/5Fkvv/9/

的小提琴
$(document).ready(function () {
    $("#spanhide").hide();

    $("#clickhide").click(function () {
        $("#spanhide").slideToggle("slow");

        if ($(this).text() == "Show span") {
            $(this).text("Hide span");
        } else {
            $(this).text("Show span");
        }
    });

});