有谁知道为什么这个动画很好:
function setContainerHeight() {
$(".pagecontainer").animate({
height: '700px'
}, 500);
}
即。一个固定的高度,但这根本没有动画?
function setContainerHeight() {
$(".pagecontainer").animate({
height: 'auto'
}, 500);
}
它仍然会调整为自动调整大小,但没有动画,只需按下它即可。
我的代码:
JS:
<script>
function setContainerHeight() {
$(".pagecontainer").animate({
height: 'auto'
}, 500);
}
$('.link').on('click', function(e){
$('.pagecontainer>div').fadeOut(0);
setContainerHeight();
$(this.getAttribute("href")).fadeIn();
});
</script>
CSS:
.pagecontainer {
min-height:450px;
width:80%;
min-width:800px;
padding:50px 0;
margin: 0 auto;
}
.pagecontainer>div{
display: none; /*wait until page needs to be faded in*/
padding-left:50px;
padding-right:50px;
position:relative;
}
HTML:
<div class="pagecontainer">
<a href="#page1" class="link">page 1</a>
<a href="#page2" class="link">page 2</a>
<a href="#page3" class="link">page 3</a>
<div id="page1">TONS OF TEXT HERE</div>
<div id="page2">A BIT OF TEXT HERE</div>
<div id="page3">BUNCH OF IMAGES</div>
</div>
有不同的div淡入/淡出,每个都需要不同的高度。页面的宽度也是动态的,但不需要动画,只需用视口拉伸/缩小。
感谢。
答案 0 :(得分:7)
DEMO http://jsfiddle.net/zbB3Q/
Animate不知道结束高度。你需要得到它然后动画,但要做到这一点,你必须快速设置高度并返回到动画之前的状态。
function setContainerHeight() {
var heightnow=$(".pagecontainer").height();
var heightfull=$(".pagecontainer").css({height:'auto'}).height();
$(".pagecontainer").css({height:heightnow}).animate({
height: heightfull
}, 500);
}
答案 1 :(得分:2)
根据经验,我遇到了同样的问题,但你无法动画到auto
。但是,您可以预先获得容器高度,然后设置动画。例如。
function setContainerHeight() {
newHeight = $('.pagecontainer').height();
$(".pagecontainer").animate({
height: newHeight
}, 500);
}
答案 2 :(得分:0)
这里的派对有点晚了,但我的一些代码中遇到了完全相同的问题。我写了一个小小的jQuery插件来解决这个问题 - 如果你仍然需要解决这个问题,我可以使用here。
答案 3 :(得分:0)
我制作了一个处理这个问题的小插件 - 应该相当简单,基于Darcy Clarke发布的here方法,以及一些(imo)非常必要的改进。只需即插即用jQuery: