我在CSS中设置了一个最小高度为300px的元素:
<!-- HTML -->
<div id="summary"></div>
<div id="collapse"></div>
/* CSS */
#summary { min-height: 300px }
当我点击#collapse
元素时,我希望#summary
元素平滑地折叠到100px的高度。
$("#collapse").click(function() {
$("#summary").animate({ height: 100}, 1000);
});
但是,没有任何事情发生,我认为这是因为min-height属性。
我have read this discussion on the jQuery forums,但我仍然无法弄清楚如何使#summary
div平滑动画 - 将min-height设置为auto,因为他们建议使div消失然后重新出现!有人可以帮忙吗?
答案 0 :(得分:2)
你可以尝试做类似
的事情$("#collapse").click(function() {
var summary = $("#summary"),
height = summary.height();
summary
.css({ height: height + 'px', minHeight: 0 })
.animate({ height: 100}, 1000);
});
我们的想法是重置min-height
并将css height
属性设置为动画之前元素本身的计算高度。
答案 1 :(得分:2)
您需要在css中使用height
代替min-height
,因为在click
事件中将高度降低到100并且最小高度为300。
<强> Live Demo 强>
更改
#summary { min-height: 300px }
要
#summary { height: 300px; }
如果您需要使用最小宽度,则需要更改动画而不是高度的最小宽度。
答案 2 :(得分:1)
在小提琴中试试这个: http://jsfiddle.net/8jn7v/5/
改变这个:
height: 50
到此:
$('#summary').animate({
'min-height': 50+'px' // <--see the quotes at min-height and add pixels to it
}, 1000);
min-height
可让您不要将高度降低到小于min-height
由于300px
,您的元素仅限于min-height
,因此您必须为min-height
设置动画,而不是height