はじめまして、
■やりたいこと
サイトデザインを編集しているのですが商品と商品の間にバナーを差し込みたいです。
具体的には<div class="item"><img src=""></div>の100番目です。
■問題
バナーが差し込まれるところまで画面をスクロールすると
HTML要素が一瞬表示されてしまいます。
これをなくしたい。
■HTML <div class="ItemListInner crin"> <div class="item"><img src=""></div> <div class="item"><img src=""></div> | |x300 | <div class="item"><img src=""></div> <div class="item"><img src=""></div> </div>
入れたいバナーですが、スライダーです。
■HTML <!--▼.ItemListInner .itemの間に入れる要素▼ --> <div class="addition"> <ul class="slider"> <li><a class="slider-item01" href=""><img src=""></a></li> <li><a class="slider-item01" href=""><img src=""></a></li> <li><a class="slider-item01" href=""><img src=""></a></li> <li><a class="slider-item01" href=""><img src=""></a></li> </ul> </div> <!--▲.ItemListInner .itemに突っ込む要素▲ -->
■スタイルシート <style> //.itemの100番目に入れる空白の要素 に.spaceでrelativeをつかって空白をねじ込んでます。 .space{ position: relative; display: inline-block; padding-top: 150%; vertical-align: bottom; box-sizing: border-box; } // .itemの100番目に入れるスライダーの親要素.additionをabsoluteで.spaceの上に載せてます。 .addition { position: absolute; left: 0; width: 100% ; text-align: center; background:#f00; margin-top: -27.5vmin ; } </style>
下にスクロールすると画面した付近でjQuery.Bottomプラグインが発動して次のページが読み込まれるという遅延ロードが始まります。
AJAXで制御されています。
<script type="text/javascript"> var process_flg = false; var end_flg = false; $(window).bottom({proximity: 0.05}); $(window).on('bottom', function() { if (process_flg == false && end_flg == false) { var max_page = $("#max_page").text(); var next_page = $('#next_page').text(); if (eval(max_page) >= eval(next_page)) { $.ajax({ url: "{LoadItemsPageURL}" + next_page + "{LoadItemsPageURLParams}", dataType: 'html', beforeSend: function () { process_flg = true; $('#loading').css('display', 'block'); }, success: function (data) { $('#mainContent .ItemListInner').append(data); next_page = eval(next_page) + 1; $('#next_page').text(next_page); /* ▼.itemに入れる要素 ▼*/ $(function() { setTimeout(function(){ let baneritem1 = $('.ItemListInner div.item:nth-child(100)'); banneritem1.append( $('.addition')); // .itemの100番目に入れる要素 },400); let banneritem2 = $('.ItemListInner div.item:nth-child(100)'); banneritem2.append('<div class="space"></div>'); //.itemの100番目に入れる空白の要素 }); /*▲ .itemに入れる要素 ▲*/ }, complete: function () { process_flg = false; $('#loading').css('display', 'none'); } }); } else { end_flg = true; } } }); </script> コード
コレをやると100番目にスライダーは読み込まれるのですが・・・
途中でフッターが読み込まれるたびにHTML要素が一瞬表示されてしまいます。
なんとかならないでしょうか?
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/18 18:32
2022/03/19 06:18
2022/03/19 08:05
2022/03/26 06:41