我想创建一个 div 元素,该元素根据用户搜索查询返回的内容增长和缩小(上下滑动)。
我正在使用 JQuery 的 animate 属性,并且在大多数情况下,它是功能性的。当用户执行第一个查询时,我真的希望动画在淡入内容的同时执行 slideDown 效果。如果执行额外的搜索查询,则 div 将根据从服务器返回的内容增长(或缩小)。
现在,第一次搜索会产生不想要的从左到右的幻灯片效果。后续查询正确展开 div。
为了说明这个问题,请参阅 JSFiddle:http: //jsfiddle.net/krpXk/
HTML:
<input type="text" id="search-term" />
<input type="button" id="submit-button" value="submit" />
<div id="limit">
<div id="results"></div>
</div>
Javascript:
$('#submit-button').click(function(e) {
// ajax request
$.ajax({
async: true,
cache: false,
type: 'post',
url: '/echo/html/',
data: {
html: '<p class="p-content">Search term: ' + $('#search-term').val() + '</p>'
},
dataType: 'html',
success: function(data) {
$('#results').append(data).show(function(){
$('#limit').animate({
height:$("#results").height()
},500);
});
}
});
});
CSS:
#results {
background:#dfdfdf;
display:none;
width:300px;
}
#limit {
position: relative;
overflow: hidden;
width:100%;
}
.p-content {
margin:0 auto;
width:100px;
}
更新:
我发现答案很简单。只需将 #limit 高度设置为 0 即可强制向下滑动动画。
来自答案:“请注意,我在 CSS 中为 #limit 容器指定了 0px 的显式高度,以强制执行初始动画。”