当我尝试动画百分比时,它不是动画,而是立即扩展到整个高度。我希望它扩展到100%,但顺利
CSS:
#block-views{
overflow:hidden;
height:20px;
}
HTML:
<div id="block-views">
1<br/>
2<br/>
3<br/>
4<br/>
5<br/>
6<br/>
7<br/>
8<br/>
9<br/>
10<br/>
</div>
<a href="#" class="loadmore">Load more</a>
Jquery代码:
$(function() {
$( ".loadmore" ).toggle(
function() {
$( "#block-views" ).animate({
height: "20px",
}, 1000 );
},
function() {
$( "#block-views" ).animate({
height: "100%",
}, 1000 );
}
);
});
当我点击加载更多时,它会立即扩展到100%,而不是平滑,但是当我第二次点击它时,它会将尺寸平滑地减小到20像素。我尝试在Chrome的检查器工具中观察扩展过程,我可以清楚地看到百分比正在顺利添加,但数字不是整数,Chrome似乎无法识别它。我该如何解决这个问题?
答案 0 :(得分:1)
我认为CSS百分比值在父节点上。
所以如果你想使这成为可能你想要添加div父节点并设置父节点的高度,我在jsFiddle
中举例说明答案 1 :(得分:0)
我建议来自JQuery论坛的这篇文章适合您的要求。
http://forum.jquery.com/topic/jquery-animate-with-a-percentage-placed-div
答案 2 :(得分:0)
我很确定这不合法。你不能混合px和百分比 - 它无法在它们之间进行转换。
答案 3 :(得分:0)
我想到两种方式。
第一种方式是你的方式,我在这里发现逗号,
错误:并且需要使用position:aboslute;
css属性。最后一件事改变你的主要响应函数顺序。
$(function() {
$( ".loadmore" ).toggle(
function() {
$( "#block-views" ).stop().animate({
height: "20px"//if you wont use another animate property; dont use comma here
}, 1000 );
},
function() {
$( "#block-views" ).stop().animate({
height: "100%"
}, 1000 );
}
);
});
结构就像这样= .animate(properties [,duration] [,easing] [,complete])
多个动画功能应该是这样的:.animate({'height':'20px','width':'20px'},1000);
第二种方式是我的方式,你可以为每次点击添加+ 20px高度:
$(function() {
$( ".loadmore" ).click(function() {
$("#block-views").animate({'height':'+=20px'},1000);
});
});
答案 4 :(得分:0)
我找到了解决这个问题的方法(抱歉迟到了)。你需要做的是在#block-views 元素中创建额外的包装器,它将具有实际的高度信息:
<div id="block-views"> //height is 20px now
<div class="wrapper"> //has its full height in px
1<br/>
2<br/>
3<br/>
4<br/>
5<br/>
6<br/>
7<br/>
8<br/>
9<br/>
10<br/>
</div>
</div>
现在在javascript中你可以将 .wrapper 高度传递给animate()函数:
$('#block-news').stop().animate({'height': $('#block-news .wrapper').height()}, 1000);
为我工作。对于切换,您可以添加新变量并存储初始高度(20px)。