图片与 Isotope 和 imagesLoaded 对齐
Picture alignment with Isotope and imagesLoaded
我想从公司帐户加载一些 flickr 照片,但在图片对齐方面遇到了一些问题。
我正在使用 Isotope 以正确的方式对齐图片。现在我面临的问题是,当我的网站第一次加载时图片重叠。当我调整 window 大小时,图片对齐正常,一切正常,但它没有解决我的基本问题。
为了解决网站上第一次调用的重叠问题,我尝试使用推荐的 imagesloaded.js 但它不起作用。
起初我以为是因为我通过异步调用 ajax 加载了图片,所以我将 AJAX 函数更改为以下函数,但我仍然面临同样的问题。
$.getJSON("https://api.flickr.com/services/feeds/photos_public.gne?id=125591374@N02&format=json&jsoncallback=?", function (data) {
console.log(data);
$("img").each(function () {
$(this).attr("src", data.items[i].media.m);
i++;
});
});
这是我的同位素脚本
var $container = $('#picContainer');
$container.isotope({
itemSelector: '.picContainer-item'
, percentPosition: true
, layoutMode: 'masonry'
, masonry: {
columnWidth: 50
}
});
$container.imagesLoaded().progress(function () {
$container.isotope("layout");
});
我找不到问题。有谁知道我哪里做错了吗?
为了更好的理解,我也准备了codepen :)
谢谢!
发生的事情是在所有图像加载之前加载同位素。所以它不会设置正确的宽度,直到它再次呈现它(当你调整 window 的大小时)。如果将同位素代码放在 $(window).load(function(){})
中(仅在加载所有资源后运行),它将起作用。
$(window).load(function() {
var $container = $('#picContainer');
$container.isotope({
itemSelector: '.picContainer-item'
, percentPosition: true
, layoutMode: 'masonry'
, masonry: {
columnWidth: 50
}
});
});
(另外,您可以删除 imagesloaded.js)
我想从公司帐户加载一些 flickr 照片,但在图片对齐方面遇到了一些问题。
我正在使用 Isotope 以正确的方式对齐图片。现在我面临的问题是,当我的网站第一次加载时图片重叠。当我调整 window 大小时,图片对齐正常,一切正常,但它没有解决我的基本问题。 为了解决网站上第一次调用的重叠问题,我尝试使用推荐的 imagesloaded.js 但它不起作用。
起初我以为是因为我通过异步调用 ajax 加载了图片,所以我将 AJAX 函数更改为以下函数,但我仍然面临同样的问题。
$.getJSON("https://api.flickr.com/services/feeds/photos_public.gne?id=125591374@N02&format=json&jsoncallback=?", function (data) {
console.log(data);
$("img").each(function () {
$(this).attr("src", data.items[i].media.m);
i++;
});
});
这是我的同位素脚本
var $container = $('#picContainer');
$container.isotope({
itemSelector: '.picContainer-item'
, percentPosition: true
, layoutMode: 'masonry'
, masonry: {
columnWidth: 50
}
});
$container.imagesLoaded().progress(function () {
$container.isotope("layout");
});
我找不到问题。有谁知道我哪里做错了吗?
为了更好的理解,我也准备了codepen :)
谢谢!
发生的事情是在所有图像加载之前加载同位素。所以它不会设置正确的宽度,直到它再次呈现它(当你调整 window 的大小时)。如果将同位素代码放在 $(window).load(function(){})
中(仅在加载所有资源后运行),它将起作用。
$(window).load(function() {
var $container = $('#picContainer');
$container.isotope({
itemSelector: '.picContainer-item'
, percentPosition: true
, layoutMode: 'masonry'
, masonry: {
columnWidth: 50
}
});
});
(另外,您可以删除 imagesloaded.js)