[jQuery] fadeIn / fadeOut するコンテントスライダーを自作する
div スライダーともいうよう。
プラグインを使ったところ、ぶつかるところがありました。
利用したい機能が限られていたので、チュートリアル見ながら自作した方が良いかもと探して、こちらで勉強しました。
ソース
HTML でスライド用の画像を並べておき、div で囲んでおく。
<div id="slideshow" class="slideshow">
<p class="boxes box1"><img src="/img/photo-01.jpg" alt="photo 1"></p>
<p class="boxes"><img src="/img/photo-02.png" alt="photo 2"></p>
<p class="boxes"><img src="/img/photo-03.png" alt="photo 3"></p>
</div>
並べた画像を CSS で同じ座標に重ねて、最初の画像以外を隠しておく。
.slideshow {
position: relative;
background-color: #000;
width: 630px;
height: 340px;
img {
width: auto;
height: 340px;
}
.boxes {
position: absolute;
display: none;
}
.box1 {
display: block;
}
}
表示している画像を jQuery の :visible
で選択して fade させています。
var nowVisibleBox = 1;
var wrapper = $('div#slideshow');
var countBoxes = $('.boxes').size();
var intervalTime = 8000;
var fadeTime = 1200;
function slideShow() {
'use strict';
if (nowVisibleBox === countBoxes) {
wrapper.find('p:visible').fadeOut(fadeTime);
wrapper.find('p:first-child').fadeIn(fadeTime);
nowVisibleBox = 1;
} else{
wrapper.find('p:visible').fadeOut(fadeTime);
wrapper.find('p:visible').next().fadeIn(fadeTime);
nowVisibleBox++;
}
}
$(function() {
'use strict';
setInterval(function() {
slideShow();
}, intervalTime);
});
:first-child
で、セレクタで指定した要素のうち最初に登場した子要素を指定。
これで最初の画像に戻しています。
HTML と CSS で用意した物を操作すると。