【问题标题】:Masonry overlapping with ImagesLoaded without Infinite Scroll in Tumblr在 Tumblr 中没有无限滚动的情况下,砌体与 ImagesLoaded 重叠
【发布时间】:2015-06-19 12:56:04
【问题描述】:

第一次来。 我正在尝试使用 Masonry 插件创建包含 3 列的自定义 tumblr 主题,但我的进展并不顺利。这些帖子是重叠的,我什至没有使用无限滚动。我尝试使用 $(window).load(...) 但它不起作用,我尝试使用 ImagesLoaded 但它也不起作用,请帮助我^-^ 这是页面加载的方式:http://s16.postimg.org/u17syta51/image.jpg,如果我调整/刷新页面,它们会转到正确的位置。这是我的完整代码:http://pastebin.com/VLzwEfgP,我的测试 tumblr 网址是 entertain-us.tumblr.com(我不能放 +2 链接)。 Obs:主题还没有完成,因为我不知道如何解决这个问题。

jQuery(这是在</body> 之前):

var $container = ('section#container');
$container.imagesLoaded(function(){
    $container.masonry({
        itemSelector: 'article.post',
        columnWidth: 400,
        isFitWidth: true,
    });
});

CSS

section#container {
    position: relative;
    top: 50px;
    max-width: 1250px;
    height: auto;
    padding: 0px;
}

article.post {
    width: 400px;
    margin: 5px;
    margin-bottom: 10px;
    opacity: 0.7;
}

article.post:hover {
    opacity: 1;
}

将近 2 年我没有编程,所以如果我在代码中犯了任何愚蠢的错误,我会很感激知道哈哈

抱歉有任何英文错误,感谢您的关注:D

--- 解决方案---

为了解决重叠问题,正如 Macsupport 所说,我只需要将 Masonry 代码放在 $(document).ready 中,这样

var $container = $('section#container');    
$(document).ready(function(){       
    $container.imagesLoaded(function(){
        $container.masonry({
            columnWidth: 400,
            itemSelector: 'article.post',
            isFitWidth: true
        });
    });
});

我将var $container = $('section#container'); 放在$(document).ready(); 之前,因为脚本将我的容器宽度更改为 800 像素(仅制作 1 列),当我在激活脚本之前设置变量时,它不会改变它的宽度,我可以放isResizeBound: false 在砖石内部,但我仍然会尝试根据窗口大小更改它的布局,当我成功时,我会在这里更新。但是现在重叠问题已经解决了。

【问题讨论】:

    标签: jquery masonry


    【解决方案1】:

    你的 js 有一些错误。

    您的容器变量中缺少用于 jquery 的 $:

     var $container = ('section#container');
    

    应该是这样的:

     var $container = $('section#container');
    

    试试这个代码:

        var $container = $('section#container');
            $container.imagesLoaded(function(){
                $container.masonry({
                    itemSelector: 'article.post',
                    columnWidth: 400,
                    isFitWidth: true
                });
            });
    

    附录

    将此代码放入您的

    $(document).ready(function(){
    
     }); 
    

    不是在它之外,就像现在一样。 另外,你为什么要重命名你的 imagesLoaded.js?

    【讨论】:

    • 天哪,哈哈,谢谢。还有一条信息:我不得不将代码放回 中,因为它在 之前不起作用。好吧,我认为这就是全部,但帖子仍然重叠:/
    • 我做了,这应该使页面加载然后激活插件,使帖子的位置更改为 3 列布局,对吗?好吧,它正在做相反的事情,它正在加载砖石布局并将位置更改为 1 列布局哈哈。关于 imagesLoaded 脚本,我不记得为什么要重命名它 xD
    • 在代码中的某处,您将 #container 设置为仅 800 像素宽(使用您的开发人员工具查看)。由于您的 columnWidth 设置为 400 像素,以及边距等,因此没有空间容纳第二列。我认为这与砌体无关。
    • #container 宽度随着浏览器宽度的变化从 400-800-1200 等响应变化。这就是为什么它是一列(如果浏览器足够大,则为 2)
    • 这是因为 Masonry 脚本会根据浏览器大小更改布局,这就是我设置“最大宽度”而不是“宽度”的原因,所以它可以少于 3 列,但不能超过。我试图把“var $container=$(..);”在 document.ready 之前它可以工作,但是当我调整浏览器大小时布局没有改变。所以,我猜 Masonry 将容器宽度设置为“800px”,如果我在激活插件之前在变量中获得 section#container 选择器,它不会改变它的宽度。现在,很好,它正在工作,我将用最终代码编辑问题,非常感谢xD
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多