【问题标题】:JQuery Masonry breaks after first image, loads with strange gapsJQuery Masonry 在第一张图片后中断,加载奇怪的间隙
【发布时间】:2013-04-06 05:48:29
【问题描述】:

我在 Tumblr 主题上使用 Infinite Scroll 实现 Masonry —— 我之前已经成功完成了一些事情,但我就是无法让这个停止“破坏”和分散图像。绝望了!

neuraldamage-theme4.tumblr.com 的现场演示(密码是访客)。

我已经尝试从 body 标记中删除除#posts div 及其内容(当然还有脚本)之外的所有内容,但问题仍然存在——所以这似乎不应该是周围环境的问题div。

这是我的脚本:

$(document).ready(function() {
    $('#post-video iframe').attr('width', '300');   // resize embedded videos
});

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

$container.imagesLoaded( function(){
    $container.masonry({
        itemSelector : '.post',
        columnWidth : 300
    });
});

$container.infinitescroll({
    navSelector  : '#pagination',    // selector for the paged navigation 
    nextSelector : '#pagination li a.pagination_nextlink',  // selector for the NEXT link (to page 2)
    itemSelector : '.post',     // selector for all items you'll retrieve
    loading: {
        finishedMsg: '',
        img: 'http://static.tumblr.com/6u5yyqj/iUtmgivzo/loading.gif',  // http://static.tumblr.com/6u5yyqj/iUtmgivzo/loading.gif, http://static.tumblr.com/6u5yyqj/yWkmgj1jq/loadingdark.gif
    }
    },
    // trigger Masonry as a callback
    function( newElements ) {
        var $newElems = $( newElements );
        $container.masonry( 'appended', $newElems );
    }
);

这是我嵌入的,只是确保它是最新的:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://static.tumblr.com/6u5yyqj/MPKmktfkv/jquery.masonry.min.js"></script>
<script src="http://static.tumblr.com/6u5yyqj/nsQmkth3k/jquery.infinitescroll.min.js"></script>

如果您想查看完整代码:gist.github.com/neuraldamage/5307289

如果有人能对此有所了解,我将不胜感激!

【问题讨论】:

  • 旁注:不要将 cloudflare cdn 用于您的 jquery.easing。它没有加载并导致页面挂起。
  • 感谢您告诉我——我会在其他地方托管它。

标签: javascript jquery tumblr jquery-masonry infinite-scroll


【解决方案1】:

它遇到了一堆问题,因为您实际上在页面上有多个&lt;div id="posts"&gt;。可能是您的 Tumblr 代码吐出过多的问题。

【讨论】:

  • 就是这样!出于某种原因,即使它只在我的 HTML 中出现一次(我实际粘贴到 Tumblr 中的 HTML,而不是您在页面上查看源代码时看到的 HTML),它也会多次重复整个“帖子”div。为什么这样做对我来说完全是个谜——我重新开始使用相同的 HTML 框架(以及我之前成功使用过的旧版本的脚本)并且这次没有任何问题。谢谢!
【解决方案2】:

问题是这样的:

<div id="posts" style="position: relative; height: 483px;" class="masonry">

更改该高度以适应您的内容(因为它不够大),或者根本不声明它。

当我检查该元素时,我只是删除了 height 值,然后一切都移动到位。

【讨论】:

  • 事情就是这样,我没有声明。 #posts div 上实际上没有样式。我尝试过使用 height: 100%,甚至是绝对定位,但没有骰子。
  • 我害怕那个。最好的选择是调试它并隔离计算该值的插件行,然后找出它为什么不能正确执行。更快(也更脏)的解决方案是插件完成其业务之后自己以编程方式更改高度,例如在您设置的回调中。最脏的选项仍然可行,那就是在你的 css 中声明 #posts { height: 100% !important;} - 这工作,但不鼓励。
  • 谢谢,但是...我尝试了最肮脏的解决方案(因为其他两个超出了我的 JS 技能),现在它们都在彼此之上。更新了现场演示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
相关资源
最近更新 更多