【问题标题】:jQuery masonry preload images from stringjQuery masonry 从字符串预加载图像
【发布时间】:2012-11-05 11:19:24
【问题描述】:

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

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

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

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

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

然后我在触发事件上一次加载它们 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;
    });

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

谢谢!

【问题讨论】:

    标签: jquery mysql jquery-masonry


    【解决方案1】:

    你看过这个吗? 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 ); 
            });
          }
        );
    
      });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-07
      • 2011-11-23
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多