やりたいこと
下記サイトの「Single Item」のようなループするスライドショーを作成したいです。
http://kenwheeler.github.io/slick/
困っていること
スライドとドットを順番に動かすところまでは出来ました。
その先ループさせていくにはどうしたらいいかわからず困っております。
3枚目のあとに1枚目に戻る(左方向の動き)というよりは、参考サイトのように3枚目の次に1枚目が来る(右方向の動き)形にしたいです。
現状のソース
HTML
1<div class="slideBlock"> 2 <ul class="slider"> 3 <li><img src="http://placehold.jp/24/cc9999/000/300x150.png" alt=""></li> 4 <li><img src="http://placehold.jp/24/99cc99/000/300x150.png" alt=""></li> 5 <li><img src="http://placehold.jp/24/9999cc/000/300x150.png" alt=""></li> 6 </ul> 7</div> 8 9<ul class="dots"> 10 <li class="is-active">●</li> 11 <li>●</li> 12 <li>●</li> 13</ul> 14 15<button class="is-next">次へ</button>
SCSS
1.slideBlock { 2 position: relative; 3 height: 150px; 4} 5 6.slider { 7 position: absolute; 8 top: 0; 9 left: 0; 10 display: flex; 11 transition: .8s all; 12} 13 14.dots { 15 display: flex; 16 17 > li { 18 color: black; 19 20 &.is-active { 21 color: red; 22 } 23 } 24}
JavaScript
1function slideShow() { 2 const slider = $('.slider'); 3 const slides = slider.find('li'); 4 const slideLength = slides.length; 5 const slideWidth = slides.width(); 6 let slideNumber = 0; 7 8 const dots = $('.dots li'); 9 const activeClass = 'is-active'; 10 11 const nextBtn = $('.is-next'); 12 13 nextBtn.on('click', () => { 14 // 現在のスライド番号を更新 15 slideNumber++; 16 17 // スライドの動き 18 const sliderPosition = slideWidth * slideNumber; 19 slider.css('left', `-${ sliderPosition }px`); 20 21 // ドットの付け替え 22 dots.removeClass(activeClass); 23 dots.eq(slideNumber).addClass(activeClass); 24 }); 25} 26 27slideShow();
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/18 00:18