全部で20枚の画像を、
画面サイズ1600以上では横に8つ×2列の16枚(※1)、
画面サイズ1600以下では横に6つ×2列の12枚(※2)を並べようと、以下のように記述しました。
(知識が浅いので、もっと良い書き方があると思いますがご了承ください)
※1(1600以上)
■■■■■■■■
■■■■■■■■
※2(1600以下)
■■■■■■
■■■■■■
無事ランダムで並べることに成功しましたが、
画面サイズを横に引き延ばすと、ランダムですので画像がチカチカと入れ替わり、いくつかの画像の場所に「undefined」という文字が出力されてしまいます。
i < 16(あるいはi < 12)としてしまったため、読み込まれなかった画像が画面サイズを伸ばしたことにより出現してしまったのかと思い、
全ての画像を読み込もうとしてi < 16(あるいはi < 12)の部分をarr.lengthにしてしまうと、20枚全部が読み込まれてリストの形が崩れてしまいます。
「undefined」という文字を出さないため、全ての画像を読み込んだ上でリストを崩さずに表示するには、どのように記述したらよいでしょうか。
(cssでoverflowをhiddenにするとかではなく、Javascriptで解決したいです)
勉強ですので、この場所をこんな風にしたら、というヒントだけでも良いので教えていただけたら嬉しいです。
よろしくお願いいたします。
HTML
1<ul id="photo"> 2<li><img src="../assets/img/photo001.jpg" alt=""></li> 3<li><img src="../assets/img/photo002.jpg" alt=""></li> 4<li><img src="../assets/img/photo003.jpg" alt=""></li> 5<li><img src="../assets/img/photo004.jpg" alt=""></li> 6<li><img src="../assets/img/photo005.jpg" alt=""></li> 7<li><img src="../assets/img/photo006.jpg" alt=""></li> 8<li><img src="../assets/img/photo007.jpg" alt=""></li> 9<li><img src="../assets/img/photo008.jpg" alt=""></li> 10<li><img src="../assets/img/photo009.jpg" alt=""></li> 11<li><img src="../assets/img/photo010.jpg" alt=""></li> 12<li><img src="../assets/img/photo011.jpg" alt=""></li> 13<li><img src="../assets/img/photo012.jpg" alt=""></li> 14<li><img src="../assets/img/photo013.jpg" alt=""></li> 15<li><img src="../assets/img/photo014.jpg" alt=""></li> 16<li><img src="../assets/img/photo015.jpg" alt=""></li> 17<li><img src="../assets/img/photo016.jpg" alt=""></li> 18<li><img src="../assets/img/photo017.jpg" alt=""></li> 19<li><img src="../assets/img/photo018.jpg" alt=""></li> 20<li><img src="../assets/img/photo019.jpg" alt=""></li> 21<li><img src="../assets/img/photo020.jpg" alt=""></li> 22</ul>
Javascript
1var $win = $(window); 2 3$win.on('load resize', function() { 4 var windowWidth = window.innerWidth; 5 6 if (windowWidth > 1600) { 7$(function() { 8 var arr = []; 9 $("#photo li").each(function() { 10 arr.push($(this).html()); 11 }); 12 arr.sort(function() { 13 return Math.random() - Math.random(); 14 }); 15 $("#photo").empty(); 16 for(i=0; i < 16; i++) { 17 $("#photo").append('<li>' + arr[i] + '</li>'); 18 } 19}); 20 } else { 21$(function() { 22 var arr = []; 23 $("#photo li").each(function() { 24 arr.push($(this).html()); 25 }); 26 arr.sort(function() { 27 return Math.random() - Math.random(); 28 }); 29 $("#photo").empty(); 30 for(i=0; i < 12; i++) { 31 $("#photo").append('<li>' + arr[i] + '</li>'); 32 } 33}); 34} 35});
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/20 00:43
2019/07/04 04:13