JQueryIsotopeを使用してプロジェクトを開始しました。当初は無限スクロールと統合されていましたが、少し不格好だと思いました。
InfiniteScrollをLazyLoadに置き換えることを望んでいたので、この2つを組み合わせて運が良かった人はいないかと考えました。彼らにニースをプレイさせるためのヒントは素晴らしいでしょう。
ミルに感謝
アイソトープの並べ替え/フィルタリング関数を使用する場合は、lazyloadのfailure_limitを設定し、アイソトープのonLayoutコールバックでイベントをトリガーする必要があります。
jQuery(document).ready(function($) {
var $win = $(window),
$con = $('#container'),
$imgs = $("img.lazy");
$con.isotope({
onLayout: function() {
$win.trigger("scroll");
}
});
$imgs.lazyload({
failure_limit: Math.max($imgs.length - 1, 0)
});
ドキュメントによると( http://www.appelsiini.net/projects/lazyload )
ページをスクロールした後、レイジーロードはアンロードされた画像をループします。ループでは、画像が表示されたかどうかを確認します。デフォルトでは、スクロールせずに見える範囲(表示されない)の最初の画像が見つかると、ループが停止します。これは、以下の仮定に基づいています。ページ上の画像の順序は、HTMLコードの画像の順序と同じです。一部のレイアウトの仮定では、これは間違っている可能性があります。
同位体でソート/フィルタリングされたリストでは、ページの順序がHTMLとは確かに異なるため、failure_limitを調整する必要があります。
ご覧のとおり、jQueryオブジェクトを格納して、その長さ1をfailure_limitとして使用できるようにします。長さが1である理由に興味がある場合は、lazyloadのupdateメソッドの次のチェックが原因です。
if (++counter > settings.failure_limit) {
return false;
}
スクロール時にレイジーロードをトリガーしない場合は、使用しているイベントの「スクロール」トリガーを交換する必要があります。
代わりにこれを使用すると運が良かったと思います: https://github.com/fasterize/lazyload
ライブラリに依存しないため、壊れることはありません。
Jqueryアイソトープとlazyloadの両方を一緒に正常に使用する作業コードは次のとおりです(Chromeでテスト済み)
ブラウザコンソールでは、下にスクロールすると、画像が読み込まれたときにconsole.log( 'loaded image')の確認が表示されます。 jsfiddle htmlボックスをドラッグして幅を変更すると、レイアウトが動的に変更されます。
同位体がロード後にどのようにDOMを変更するかを確認できるように、背景の赤いクラスを追加しました。これを設定しようとする際の問題のほとんどは、IMHO、同位体のdom操作に起因します。
これであなたが始めるのに十分だと思います。楽しんで。
更新:他のブラウザで例をテストしたことはなく、明らかにIEまたはFFがHTTPS参照のために機能しませんでしたjavascriptリソースの場合(セキュリティ上の奇妙な理由により)、IEおよびFFで動作させるために必要なのは、これらを置き換えることだけでした。