現在、ギャラリーを構築中です。サムネイルをクリックすると、その画像のフルサイズバージョンがに表示されますdiv
。すべての画像の幅は同じですが、高さは同じではありません。ジャンプを避けるために、コンテナの高さが新しい高さに合うようにアニメーション化されるようにスクリプトを作成しました。
コード:
$(document).ready(function() {
var thumb = $(".thumb");
var bigImage = $("#big-image").find("img");
var bigImageContainer = $("#big-image");
thumb.click(function(e){
var hrefToFull = $(this).find("a").attr("href"); // getting the fullsize link of clicked thumb
var bigSrc = bigImage.attr("src"); // src of current big image
var oldHeight = bigImage.height();
e.preventDefault();
bigImageContainer.css("height", oldHeight); // height = height of current img
bigImage.fadeOut(500, function(){ // fading the image out
bigImage.attr("src", hrefToFull); // changing src
bigImage.load(function() { // when new image is loaded
var newHeight = bigImage.height(); // height = height of new img
bigImageContainer.animate({height:newHeight}, 600); // animate height
bigImage.fadeIn(500); // fading it in again
})
});
});
});
それがすることになっていること:
div
最初に、大きな画像を含むことや大きな画像自体など、いくつかの変数を設定しました。親指をクリックすると、新しい大きな画像のURL/srcと現在の大きな画像のURL/srcが表示されます。また、現在の大きな画像の高さを保持する変数を割り当てます。次に、コンテナの高さを現在の画像の高さに設定しましたが、これが本当に必要かどうかはわかりません。
次に、古い画像がフェードアウトされ、そのソースがsrc
新しい画像のソースに置き換えられます。新しい画像が読み込まれると、その高さを変数に割り当て、親の高さをdiv
その高さに一致するようにアニメーション化する必要があることを伝えます。この後、新しい画像をフェードインします。
内容:
実際には、それは動作します。ただし、アニメーションが機能しなくなることがあります。これにより、大きな画像が親指と重なるか、大きな画像の下の多くのスペースに移動します。ですから、私の推測では、アニメーションの速度または。のいずれかに問題がありますload
。
このコードで正しくないものがありますか?バグのあるアニメーションの原因は何ですか?