gpt4 book ai didi

jquery - 砌体 : DIVs overlap even after I add imagesLoaded and 'reload'

转载 作者:可可西里 更新时间:2023-11-01 14:49:27 27 4
gpt4 key购买 nike

$(document).ready(function(){
// SECTION 1
// Seting up the element which contains the divs that will be used in the Masonry
var $galWrapper = $('#gallery-wrapper');
$galWrapper.imagesLoaded(function(){
$galWrapper.fadeIn(1000) // #gallery-wrapper's CSS 'display' property is 'none' when web page is opened. Then it fades in after the images are loaded
.masonry({
itemSelector: '.picture-wrapper',
transitionDuration: 0
});
});


// SECTION 2: SCROLL PAGINATION
var $doc = $(document);
var $win = $(window);
var isFetchingPics = false; // boolean variable to see if script is fetching items from the server
var imgFirst = 0;

$win.scroll(function(){
var $scroll = $win.scrollTop();
var $docHeight = $doc.height();
var $winHeight = $win.height();

// If-statement triggers when user reaches near bottom of page
if( $scroll >= ($docHeight - $winHeight - 800) ){
if(!isFetchingPics){
isFetchingPics = true;
imgFirst = imgFirst+20; // This tells the server-side script which row to start from

$.get(
'index.php',
{
img_first: imgFirst
},
function(responseHTML){
$responseHTML = $(responseHTML); // responseHTML is something like '<div id="10" class="picture-wrapper"><img src="http://i.imgur.com/whatever.jpg"></div> <div id="11" class="picture-wrapper"><img src="http://i.imgur.com/some-picture.jpg"></div>' ...

// Here's where I'm getting trouble, I think. Even though this whole thing is wrapped in 'imagesLoaded', the DIVs that contain the pics still overlap each other on load.
// However, if I wait for all the images to load, and reload the page, then there is usually no overlap when images get appended
$galWrapper.imagesLoaded(function(){
$galWrapper.append($responseHTML).masonry('appended', $responseHTML, 'reload'); // I've tried both 'reload' and 'reloadItems', but nothing works

isFetchingPics = false;
});
}
);
};
};
});
}); // DONE: $(document).ready

好的,问题来了:当我向下滚动时,我的脚本向服务器发送一个 GET 请求并检索一堆 DIV 以放入 #gallery-wrapper .我把 .append 包裹起来在 .imagesLoaded 中发挥作用但是在网页第一次加载时图片仍然相互重叠。

但如果我在浏览器中点击刷新,然后再次向下滚动,那么图片就可以正常加载了——没有重叠。我认为 'reload'此行 ( $galWrapper.append($responseHTML).masonry('appended', $responseHTML, 'reload');) 上的部分会使脚本重新加载图像,从而停止重叠,但仍然存在重叠。我也尝试使用 'reloadItems' , 但这也没有解决问题。

为什么?我如何才能使图片第一次正确加载?

我的浏览器是 FireFox v27.0.1

编辑:这是我的 <head> 中的内容区域。 Masonry 和 ImagesLoaded 都是 v3.1.4

<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="./css/style.css?v=0.1"> <!-- Site CSS -->

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <!-- jQuery -->
<script src="http://cdn.jquerytools.org/1.2.7/full/jquery.tools.min.js"></script> <!-- jQuery tools -->
<script src="./js/imagesloaded.pkgd.min.js"></script> <!-- imagesLoaded -->
<script src="./js/masonry.pkgd.min.js"></script> <!-- Masonry -->
<script src="./js/script.js?v=0.1"></script> <!-- Site script -->
</head>

编辑 2:重叠图像的问题已解决我改变了这个...

$galWrapper.imagesLoaded(function(){
$galWrapper.append($responseHTML)
.masonry('appended', $responseHTML, 'reload);
});

对于这个...

$galWrapper.append($responseHTML).imagesLoaded(
function(){
$galWrapper.masonry('appended', $responseHTML);
isFetchingPics = false;
}
);

出于某种原因,将 $.append()外面的方法.imagesLoaded停止重叠。我现在有一个新问题,新加载的图像在进入砌体形式之前加载到左侧的单个列中。但至少重叠问题得到了解决。

最佳答案

你看过 github 上的这个帖子了吗?

https://github.com/desandro/masonry/issues/374

正如我所读,它正在处理您遇到的相同问题,通过过滤获取结果来修复它。

此外,在 github 上有一个关于使用 ajax 附加的线程:

https://github.com/desandro/masonry/issues/520

关于jquery - 砌体 : DIVs overlap even after I add imagesLoaded and 'reload' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22444770/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com