jQuery masonry 从字符串预加载图像

标签 jquery mysql jquery-masonry

我正在使用砌体和一种实际上不使用库的无限滚动版本。初始图像正确进入布局,但添加的图像没有..它们只是连续添加。

我相信这是因为它们是从字符串加载的,它们没有高度/宽度属性来选择位置。我认为是这样,因为当我将它们包裹在预定大小的 div 中时,它们会正确地进入布局(但图像的高度将完全不同)

我在页面加载中有一定数量的图像,这些图像正确地将砌体应用到它们的布局中。

然后使用 PHP 调用 sql,我收集了一个图像路径数组,我将其转换为一个 javascript 数组:

var images = [
<?php
foreach ($images as $image) {
echo "'/$image',\n";
} ?>
];
$(images).each(function() {
var image = $('<img />').attr('src', this);
});
</script>

然后我使用 append for masonry 在触发事件中一次加载 5 个:

$appendage +=  '<div class="box append"><img src="' + images[i] + '" /></div>';
count++;
    }   

var $container = $('#result');      
$container.append( $appendage ).masonry( 'appended', $appendage );  

我试过各种预加载图片的方案都无济于事..

    $(images).each(function() {
     (new Image).src = this;
    });

任何人都可以提出一种方法,也许是一种更好的方法,从图像路径数据库作为起点到当您滚动到底部时加载到砌体中的图像作为附加

谢谢!

最佳答案

你看过这个吗? http://masonry.desandro.com/demos/infinite-scroll.html

这是相关的 JavaScript:

$(function(){

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

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

    $container.infinitescroll({
      navSelector  : '#page-nav',    // selector for the paged navigation 
      nextSelector : '#page-nav a',  // selector for the NEXT link (to page 2)
      itemSelector : '.box',     // selector for all items you'll retrieve
      loading: {
          finishedMsg: 'No more pages to load.',
          img: 'http://i.imgur.com/6RMhx.gif'
        }
      },
      // trigger Masonry as a callback
      function( newElements ) {
        // hide new items while they are loading
        var $newElems = $( newElements ).css({ opacity: 0 });
        // ensure that images load before adding to masonry layout
        $newElems.imagesLoaded(function(){
          // show elems now they're ready
          $newElems.animate({ opacity: 1 });
          $container.masonry( 'appended', $newElems, true ); 
        });
      }
    );

  });

关于jQuery masonry 从字符串预加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13421560/

相关文章:

jquery - 在 ipad 的情况下使位于文本框上的图像可点击(为 iOS 创建 HTML5 搜索输入类型)

jquery - 有条件地将第一个输入值反射(reflect)到第二个输入字段(基于复选框)

MySQL:如何找到某些值的不间断序列的最大长度?

javascript - Desandro Masonry v4.2.1 重叠图像之间无间隙

javascript - CSS如何使用不同div的边距

php - 使用可变大小的可变部分向 html 动态添加分页符

jquery - 在 ASP.NET MVC 中延迟渲染阻塞 CSS 包

php - 如何调用使用onclick从 map 区域内查询mysql的php函数

php - 数据库中的空值问题

css - html5 样式在 IE8 中不起作用