ユーザーの検索クエリから返されたコンテンツに基づいて拡大および縮小(上下にスライド)する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を指定したことに注意してください。」