問題を明らかにする前に覚えておくべき2つのこと:1。私はプログラマーではないので、自分がしていることについてのアイデアがありません。 1.)
了解しました。サイトの設定方法には約100万の問題がありますが、現在、IsotopeをLazyloadで動作させようとしています。私はおそらくこの問題に関するすべてのスタックオーバーフローを読んだことがありますが、これまでのところ問題を解決することはできませんでした。私はCMSとしてStaceyを使用しています。基本的に、私が達成しようとしているのはxxx.aestheticallyloyal.com(または実際にはwww.imageworkshop.com/lazyload-portfolio)に似ていますが、クリック可能なサムネイルがそれぞれのプロジェクトページで開くIsotope/Masonryスタイルに配置されています。Infinitescrollを機能させようとしましたが、Staceyでページ付けがサポートされているかどうかがはっきりとわからないため、あきらめました。Lazyloadと入力します。
Isotopeを正常に動作させました。Lazyloadを個別に正常に動作させることができます。しかし、私が2つを混ぜ合わせようとするときはいつでも、私は惨めに失敗します。問題は、画像が完全に読み込まれる前にIsotopeによって整理されるため、実際のサイズ(可変)に従って整列されず、固定の幅と高さを取得することです(固定の幅で問題ありませんが、それがポイントですが、高さはそれに応じてスケーリングする必要があります)。ただし、その後ウィンドウのサイズを変更すると、それに応じてグリッドが調整されます。
これは私が使用しているコードです:
<script>
$(function () {
var $window = $(window);
var $container = $('#container');
var $imgs = $("img.lazy");
$imgs.lazyload({
event: 'scroll',
effect: 'fadeIn',
failure_limit: Math.max($imgs.length - 1, 0),
appear: function () {}
});
$(function () {
$container.imagesLoaded(function () {
$container.isotope({
onLayout: function () {
$window.trigger("scroll");
},
itemSelector: '.photo'
});
});
});
$window.load(function () {
$container.isotope('reLayout');
});
});
</script>
それはおそらく多くの点で間違っています...私は知りません。さらに、現状では、reLayoutはまったく何もしていないと思います。そこから、とにかくどこに行けばいいのか本当にわかりません。誰かが私のサイトflow.blukaet.comを見て、この混乱を分類する方法を教えてもらえますか?(左側のメニューは気にしないでください、私はそれを見始めていません)。ありがとう。
更新#1
Fasterizeと呼ばれる別のLazyloadスクリプトを使用しようとしています。物事はほんのわずかにうまくいくように見えますが、私はまだ折り目の下に表示される画像を正しい方法で表示するのに問題があります。基本的に、ビューポートに読み込まれるものはすべてIsotopeによって正しく並べ替えられますが、残りの画像は実際の最終的な表示サイズに基づいて追加されません。新しいアイテムがロードされた後に再配置するために、Isotopeで何かをトリガーする必要があります。それが可能かどうかはわかりません。誰か助けてもらえますか?何が起こっているかを確認できるサイトは次のとおりです:flow.blukaet.com(上記のコードは実際のものではなくなりました)。
更新#2
したがって、これは以下の回答のおかげで修正されたコードです(また、これはappelsiiniのlazyloadではなくfasterize / lazyloadを使用しています):
<script>
$(window).load(function () {
var $container = $('#container');
var $imgs = $("img");
$container.imagesLoaded(function () {
$container.isotope({
itemSelector: '.photo'
});
});
$(window).scroll(function () {
$container.isotope('reLayout');
});
});
</script>
それは非常にスムーズではありませんが、それは仕事を成し遂げます。
以前、私は次のようなことを試みました。
<script>
$(function () {
var $container = $('#container');
var $imgs = $("img");
$container.imagesLoaded(function () {
$container.isotope({
itemSelector: '.photo'
});
});
$imgs.load(function () {
$container.isotope('reLayout');
});
});
</script>
これは実際にははるかにスムーズに実行されましたが、どういうわけか次のコンソールエラーが発生していました。
初期化の前に同位体のメソッドを呼び出すことはできません。メソッド'reLayout'を呼び出そうとしました
だからわかりません。
注意すべきもう1つの点は、コードがFFとOperaで機能することです。どうやらSafariは遅延読み込みを完全に無視しているようです。ChromeとIEではテストしていません。誰かがチェックアウトしたい場合:flow.blukaet.com