我正在使用 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()函数?我不知道......我正在寻找最好的方法,所以任何帮助或建议都会受到赞赏。
如果您需要更多信息,请告诉我,我会修改帖子。
答案 0 :(得分: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");
}
});
});
答案 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");
}
});
});