jquery砌体图像重叠,直到完成页面调整大小

时间:2013-05-06 02:25:27

标签: php javascript jquery image jquery-masonry

我找到了这个模板,用于演示我使用jquery masonry和图片布局时遇到的问题。看一下这个twitter bootstrap模板page

第一次加载页面时,所有图像都相互堆叠,直到页面刷新或重新调整大小为止。然后正确显示图像。

这是我的HTML和jQuery有同样的问题:

HTML

<div class="gallery-masonry masonry" style="position: relative; min-height:100px; height: auto;">
  <div id="loading">Loading ...</div>                            
</div>

的jQuery

$.post("functions/photo_functions.php", { f: 'getallphotos'}, function(data) {

  $('#loading').hide();

    if(data) {  
      $.each(data.images, function(i, image) {
        var img_block = '<div class="item masonry-brick" style="position: absolute; top: 0px; left: 0px;">' +
        '<a href="#" class="thumbnail"><img src="'+image.url+'" alt=""></a>' +
        '<div class="actions">' +
        '<a title="" href="#" class="tip-top" data-original-title="Edit"><i class="icon-pencil icon-white"></i></a>' +
        '<a title="" href="#" class="tip-top" data-original-title="Remove"><i class="icon-remove icon-white"></i></a>' +
        '</div>' +
        '</div>';

        $(".gallery-masonry").append(img_block);
          });

        $('.gallery-masonry').masonry({
          itemSelector: '.item',
          isAnimated: true,
          isFitWidth: true
        });             
      }

    }, "json");

知道为什么会这样,我该如何解决?

2 个答案:

答案 0 :(得分:16)

在加载所有图像后,使用imagesLoaded()触发砌体。 (imagesLoaded()由脚本http://github.com/desandro/imagesloaded提供。)

$('.gallery-masonry').imagesLoaded( function(){
  $('.gallery-masonry').masonry({
   itemSelector: '.item',
   isAnimated: true,
   isFitWidth: true
  });
});

答案 1 :(得分:5)

接受的答案缺少步骤。所以这是一步一步的。

  1. 转到imagesloaded回购并在https://github.com/desandro/imagesloaded/blob/master/imagesloaded.pkgd.min.js下载缩小版。
  2. 将该库添加到项目中。
  3. 在页面底部调用文件
  4. ```[调整你的javascript文件的路径]

    <script src="/js/masonry.pkgd.min.js"></script>
    <script src="/js/imagesloaded.pkgd.min.js"></script>
    
    <script>
      $('.gallery-masonry').imagesLoaded( function(){
        $('.gallery-masonry').masonry({
         itemSelector: '.item',
         isAnimated: true,
         isFitWidth: true
        });
      });
    </script>
    
相关问题