在我暴露我的问题之前要记住两件事:1.我不是程序员,因此我不知道我在做什么 2.像我很愚蠢一样和我说话,并且非常耐心(参见1.)
好吧,网站的设置方式有大约一百万个错误,但现在我只是想让 Isotope 与 Lazyload 一起工作。我可能已经阅读了有关该问题的每一个 stackoverflow,但到目前为止我还无法解决我的问题。我使用 Stacey 作为 CMS。基本上,我要实现的目标类似于 xxx.aestheticallyloyal.com(或者实际上是 www.imageworkshop.com/lazyload-portfolio),但在各自的项目页面中打开了可点击的缩略图排列的同位素/砌体样式。我尝试让 Infinitescroll 工作,但我不确定 Stacey 是否支持分页,因此我放弃了。输入延迟加载。
我让同位素工作正常。我可以单独让 Lazyload 正常工作。但是每当我尝试将两者混合时,我都会惨遭失败。问题是图像在完全加载之前由同位素组织,因此它们不会根据实际大小(可变)对齐,而是得到固定的宽度和高度(我可以固定宽度,这就是重点,但高度应该相应地缩放)。但是,如果我在此之后调整窗口大小,则会相应地调整网格。
这是我正在使用的代码:
<script>
$(function () {
var $window = $(window);
var $container = $('#container');
var $imgs = $("img.lazy");
$imgs.lazyload({
event: 'scroll',
effect: 'fadeIn',
failure_limit: Math.max($imgs.length - 1, 0),
appear: function () {}
});
$(function () {
$container.imagesLoaded(function () {
$container.isotope({
onLayout: function () {
$window.trigger("scroll");
},
itemSelector: '.photo'
});
});
});
$window.load(function () {
$container.isotope('reLayout');
});
});
</script>
这可能在很多方面都是错误的……我不知道。另外,按原样,我认为 reLayout 完全没有做任何事情,从那里我真的不知道该去哪里。任何人都可以看看我的网站 flow.blukaet.com 并让我知道如何整理这个烂摊子吗?(没关系左边的菜单,我什至还没有开始看)。谢谢。
更新#1
我一直在尝试使用另一个名为 Fasterize 的 Lazyload 脚本。事情似乎只是稍微好一点,但我仍然无法以正确的方式显示出现在首屏下方的图像。基本上任何加载到视口中的东西都会被同位素很好地分类,但剩余的图像不会根据它们的实际、最终、可见尺寸添加。我需要在 Isotope 中触发某些东西,以使其在加载新项目后重新排列它们。我不知道这是否可能。有人可以帮忙吗?这是您可以看到正在发生的事情的网站:flow.blukaet.com(上面的代码不再是实际的)。
更新#2
所以这是修改后的代码,这要归功于下面提供的答案(另外,这是使用fastize/lazyload而不是appelsiini的lazyload):
<script>
$(window).load(function () {
var $container = $('#container');
var $imgs = $("img");
$container.imagesLoaded(function () {
$container.isotope({
itemSelector: '.photo'
});
});
$(window).scroll(function () {
$container.isotope('reLayout');
});
});
</script>
它不是超级顺利,但它可以完成工作。
以前我尝试过一些类似的东西:
<script>
$(function () {
var $container = $('#container');
var $imgs = $("img");
$container.imagesLoaded(function () {
$container.isotope({
itemSelector: '.photo'
});
});
$imgs.load(function () {
$container.isotope('reLayout');
});
});
</script>
它实际上运行得更顺畅,但不知何故给出了以下控制台错误:
无法在初始化之前调用同位素上的方法;试图调用方法“reLayout”
所以我不知道。
另一件需要注意的是,该代码适用于 FF 和 Opera。显然 Safari 完全忽略了延迟加载。我没有在 Chrome 和 IE 中测试过。如果有人想查看:flow.blukaet.com