一連の画像を掲載するページに取り組んでいます。各画像はコンテナー内にあり、各コンテナーは左にフロートされます。画像の幅はさまざまであるため、各行にいくつの画像があるかを知る方法はありません。訪問者が画像をクリックすると、画像とそのコンテナが展開されます。
状況によっては、この展開は、クリックされた画像が次の行にジャンプし、そのために画面から離れることを意味します。クリックされた画像がどこに行っても画面を追従させる方法を探しています。
これまでの私のコードは次のとおりです。
<script type="text/javascript">
$(document).ready(function(){
$(".ExampleImage").toggle(
function(){
var Image = $(this);
var Container = $(this).closest(".ImageContainer");
Image.switchClass("ExampleImageContracted","ExampleImageExpanded",500);
Container.css('height','auto');
Image.queue(scrollToExample(Image));
},
function(){
var Image = $(this);
var Container = $(this).closest(".ImageContainer");
Image.switchClass("ExampleImageExpanded","ExampleImageContracted",500);
Container.animate({'height':'250'},500,scrollToExample(Image));
}
);
function scrollToExample(Image) {
var NewTop = $(Image).closest(".Example").offset();
$('html, body').animate( {
scrollTop:NewTop.top
}, 1000);
}
});
</script>
これを正しくシーケンスするために、.animate
との両方のコールバックを使用したことに注意してください。.queue
残念ながら、これがイメージ コンテナに取り込む値.offset
は古いトップであり、アニメーションの後に発生するものではありません。アニメーションが完了したら、コンテナーの上部を取得する方法を探しています。アドバイスをいただければ幸いです。
上記のコードの動作を確認したい場合は、こちらのリンクを参照してください。ページに到着して例 4 をクリックしても、画面は例 4 の新しい場所までスクロールダウンしないことに注意してください。