前提・実現したいこと
Slider Proで画像表示をしており、
特定の画像だけ期間表示をしたいと思っていすが、表示が上手くいかず悩んでいます。
該当のソースコード
■Slider Pro $(document).ready(function($) { $( '#slider1,#slider2' ).sliderPro({ width: '100%', height: '350', arrows: false, buttons: true, visibleSize: 'auto', autoSlideSize: true, forceSize: 'fullWidth', autoplayDelay: 7500, slideDistance: 10, breakpoints: { 800: { width: '800', height: '500', arrows: false, buttons: true, forceSize: 'fullWidth', autoSlideSize: true, slideDistance:0, } } }); }); ■期間表示 $(document).ready(function($) { $(".view_timer").each(function(index, target) { var startDate = $(this).attr("data-start-date"); var endDate = $(this).attr("data-end-date"); var nowDate = new Date(); if (startDate) { startDate = new Date(startDate); } else { startDate = nowDate; } if (endDate) { endDate = new Date(endDate); } if (startDate <= nowDate && (!endDate || nowDate <= endDate)) { $(this).show(); } else { $(this).hide(); } }); }); ■HTML <div id="slider1" class="slider-pro"> <ul class="sp-slides"> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy01.jpg" alt="デモ"></li> ↑一例として上記を期間表示させたいです。 <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> </ul><!--/ sp-slides--> </div><!--/ full-->
試したこと
①liタグにview_timerを入れ込み
<li class="view_timer sp-slide" data-start-date="2020/4/9 20:00" data-end-date="2020/4/16 1:59"><img class="sp-image" src="../img/slide/dummy01.jpg" alt="デモ"></li>
①で試したところ、画像自体は期間中のみ表示、それ以外は非表示になったものの、
期間設定した箇所に合わせて下の画像の通り、空白ができてしまいました。
②liタグ→sp-slide、divタグ→view_timerと分離する
<li class="view_timer" data-start-date="2020/4/1 0:00" data-end-date="2020/4/10 23:59"><div class="sp-slide"><img class="sp-image" src="../img/slide/dummy01.jpg" alt="デモ"></div></li>
②で試したところ、view_timerが効かずに期間外の画像がでてしまいました。
divタグをpタグ、spanタグなどで代用しても同様の結果になりました。
③view_timerをclassからidに変換
<li id="view_timer" data-start-date="2020/4/1 0:00" data-end-date="2020/4/10 23:59" class="sp-slide"><img class="sp-image" src="../img/slide/dummy01.jpg" alt="デモ"></li>
③にて、view_timerのjsをid設定にして試したところ、①と同じ現象になりました。
現状
期間表示している箇所のみ表示かつ空白がでないようにしたいのですが、上記3つの方法でやっても解決されず、
下記のような少々不恰好な形で対応しています。
<div class="view_timer" data-start-date="2020/4/1 0:00" data-end-date="2020/4/10 23:59"> <div id="slider1" class="slider-pro"> <ul class="sp-slides"> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy01.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> </ul><!--/ sp-slides--> </div><!--/ full--> </div> <div class="view_timer" data-start-date="2020/4/11 0:00"> <div id="slider2" class="slider-pro"> <ul class="sp-slides"> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy01.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> <li class="sp-slide"><img class="sp-image" src="../img/slide/dummy02.jpg" alt="デモ"></li> </ul><!--/ sp-slides--> </div><!--/ full--> </div>
Slider Proは便利なので今後も使いたいと考えているのですが、こちら解決方法がございましたらご教授いただきたいです。
よろしくお願いいたします。
補足情報
- 作業環境はDreamWeaver CC 2020で作成しています。
- CSSでview_timerを
display:none;
で記述しています。 - 仕様上
$(document).ready(function($)
で実装させています。 https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
で動かしています。- Slider Proは規定通り、
slider-pro.min.css
jquery.sliderPro.min.js
を入れています。