前提・実現したいこと
lazysizesという画像遅延のjsを使いつつ、
jquery.matchHeight.jsを使って、画像の高さをそろえたいと考えております。
が、画像遅延の影響で、高さがそろわなくなっております。
発生している問題・エラーメッセージ
画像遅延で、画像箇所に到達した時点で、
画像が読み込まれるため、下のほうの画像に関して、高さが0になってしまいます。
該当のソースコード
html
html
1<ul id="sample"> 2 <li><img class="lazyload" data-src="http://placehold.it/150x150"></li> 3 <li><img class="lazyload" data-src="http://placehold.it/150x250"></li> 4<li><img class="lazyload" data-src="http://placehold.it/150x200"></li> 5 <li><img class="lazyload" data-src="http://placehold.it/150x150"></li> 6 <li><img class="lazyload" data-src="http://placehold.it/150x250"></li> 7<li><img class="lazyload" data-src="http://placehold.it/150x200"></li> 8 <li><img class="lazyload" data-src="http://placehold.it/150x150"></li> 9 <li><img class="lazyload" data-src="http://placehold.it/150x250"></li> 10<li><img class="lazyload" data-src="http://placehold.it/150x200"></li> 11 <li><img class="lazyload" data-src="http://placehold.it/150x150"></li> 12 <li><img class="lazyload" data-src="http://placehold.it/150x250"></li> 13<li><img class="lazyload" data-src="http://placehold.it/150x200"></li><li><img class="lazyload" data-src="http://placehold.it/150x150"></li> 14 <li><img class="lazyload" data-src="http://placehold.it/150x250"></li> 15<li><img class="lazyload" data-src="http://placehold.it/150x200"></li> 16 <li><img class="lazyload" data-src="http://placehold.it/150x150"></li> 17 <li><img class="lazyload" data-src="http://placehold.it/150x250"></li> 18<li><img class="lazyload" data-src="http://placehold.it/150x200"></li> 19 <li><img class="lazyload" data-src="http://placehold.it/150x150"></li> 20 <li><img class="lazyload" data-src="http://placehold.it/150x250"></li> 21<li><img class="lazyload" data-src="http://placehold.it/150x200"></li> 22 <li><img class="lazyload" data-src="http://placehold.it/150x150"></li> 23 <li><img class="lazyload" data-src="http://placehold.it/150x250"></li> 24<li><img class="lazyload" data-src="http://placehold.it/150x200"></li> 25 <li><img class="lazyload" data-src="http://placehold.it/150x150"></li> 26 <li><img class="lazyload" data-src="http://placehold.it/150x250"></li> 27<li><img class="lazyload" data-src="http://placehold.it/150x200"></li> 28 <li><img class="lazyload" data-src="http://placehold.it/150x150"></li> 29 <li><img class="lazyload" data-src="http://placehold.it/150x250"></li> 30<li><img class="lazyload" data-src="http://placehold.it/150x200"></li> 31 <li><img class="lazyload" data-src="http://placehold.it/150x150"></li> 32 <li><img class="lazyload" data-src="http://placehold.it/150x250"></li> 33<li><img class="lazyload" data-src="http://placehold.it/150x200"></li> 34 <li><img class="lazyload" data-src="http://placehold.it/150x150"></li> 35 <li><img class="lazyload" data-src="http://placehold.it/150x250"></li> 36<li><img class="lazyload" data-src="http://placehold.it/150x200"></li> 37 38</ul> 39
css
css
1ul { 2 max-width: 960px; 3 width: 100%; 4 overflow: hidden; 5 margin: 0 auto; 6} 7li { 8 float: left; 9 width: 150px; 10 margin: 5px; 11 list-style:none; 12 background:red; 13} 14
実行用のコード
js
1$(function() { 2 $('#sample li').matchHeight(); 3});
lazysizesに関してはこちら、
http://afarkas.github.io/lazysizes/
jquery.matchHeight.jsはこちら
https://brm.io/jquery-match-height/
下記はコードペンにて、再現したものになります。
https://codepen.io/satoru1993/pen/OJVLwGz
試したこと
lazysizesのコードをもともと</body>上に設置していたのを
</head>直上に変更してみましたが、 変わりませんでした。また、
https://gamp.ameblo.jp/mikuxmiku/entry-12507993473.html
上記記事の
画像遅延読み込み・・・・。ってことはこれはまだ画像が読み込み終わってないときに、
matchHeight処理されてたらheight:0px;になるのは当然じゃないか??笑
という事で処理タイミングを見直してみました。
$('.lazyload').trigger('unveil').bind('load', function(){
$('img').matchHeight();
}
というのがあり、lazysizesに関しても、
処理タイミングを変えたらできるのではと
いう仮説まで立てておりますが、実際どこを
変えればいいのかまではよくわかっておりません。
補足情報(FW/ツールのバージョンなど)
jqのバージョンは3.1.1なります。
実際のサイトですが、
私都合で申し分けないのですが、
現状公開できていないため、
URLが載せられません。
申し訳ございません。
お手数をおかけしますが、お知恵を貸していただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー