2

我正在使用twitter-bootstrap框架。

我正在尝试为页面的一部分设置动画。首先进入这个小提琴,在下面的代码之前我会解释这个想法。

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() 函数?我不知道......我正在寻找最好的方法来做到这一点,所以任何帮助或建议将不胜感激。

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

4

3 回答 3

3

这是代码演示

$(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");
    }
});

});
于 2013-05-21T16:44:46.810 回答
0

动画会很好,只需将跨度的高度首先添加到容器 div 和动画。

$(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");
            }
        });

    });
于 2013-05-21T16:37:50.367 回答
0

最好的解决方案是使用.slideToggle()函数。

这是一个演示它的小提琴: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");
        }
    });

});
于 2013-05-27T12:26:09.143 回答