我正在为摄影师建立一个网站。它应该使用 Bootstrap 3 框架构建,并且他希望在一个页面上有一个包含 400 多个图像的砌体。为此,必须使用 LazyLoad。我现在花了几天时间试图让LazyLoad与 Desandros Masonry合作,但没有成功。
我已经尝试了所有可以在谷歌上搜索到的示例,但是大多数帖子/网站/论坛只是将您重定向,或者复制了这个 stackoverflow 答案: Combining LazyLoad and Jquery Masonry
我已经尝试了这两种方法,但不幸的是我得到的只是白发..... :(
这是我正在处理的页面的简化实时版本:http:
//nr.x10.mx
在这个例子中,我在页面加载时添加了一个淡入,但是因为我可以让它工作,所以离开了LazyLoad 。
在这里你有以下的FIDDLE
var container = document.querySelector('#ms-container');
imagesLoaded( container, function()
{
var msnry = new Masonry(container,
{ itemSelector: '.ms-item',
columnWidth: '.ms-item',});
});
你也可以在这里下载整个包,包括jquery.lazyload.js
这里
任何帮助将不胜感激
更新
在这里,您可以有 4 个不同示例来说明发生的不同问题。我还高兴地发现 Bootstrap.img-responsive
类正在干扰 LazyLoad。
1 - 没有LazyLoad 的砌体
2 - 砌体和 Lazyload - 砌体分解并且 LazyLoad 没有效果
3 - 没有 Masonry 的 LazyLoad - LazyLoad 没有效果
4 - 没有 Masonry 和 Bootsrap 的 LazyLoad “img-responsive” 已删除
5 - 砌体和 LazyLoad 使用第一种方法上面提到的 SO 答案的
6 - Masonry & LazyLoad 使用上面提到的 SO 答案的第二种方法
最后两个都给出以下错误:[Error] TypeError: 'undefined' is not a function (evalating '$container.imagesLoaded') global代码(5.html,第 110 行)
更新 zip HERE
再次,任何帮助将不胜感激,谢谢