jQueryIsotopeを使用してプロジェクトを開始しました。当初は無限スクロールと統合されていましたが、少し不格好だと思いました。
InfiniteScrollをLazyLoadに置き換えることを望んでいたので、この2つを組み合わせて運が良かった人はいないかと思いました。彼らを上手にプレイさせるためのヒントは素晴らしいでしょう。
ミルに感謝
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操作に起因します。
これで始められるといいのですが。楽しむ。
更新: 他のブラウザーで例をテストしたことはありません。JavaScriptリソースのHTTPS参照が原因で、IEまたはFFが機能しなかったようです(セキュリティ上の奇妙な理由により)。ここに示すように、IEとFFで機能させるために必要なのは、それらを置き換えることだけでした。