我现在正在建一个画廊。单击缩略图时,该图像的全尺寸版本显示在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
.
您看到此代码有什么不正确的地方吗?什么可能导致错误的动画?