BgSwitcherで背景画像をスライドさせる
数年前に立ち上げたサイトに使ったスライダーが何を使ったかわからなくなったので調べ直した。BgSwitcherだった。背景画像を自動で切り替えるjQuery。上記サンプルのようにサイトのトップページにイメージ画像を流しっぱなしにするのに手軽でいい。
上記サイトから「jquery.bgswitcher.js」をダウンロードして適当な場所に格納。jQuery 1.7.x以上が必要。<head>〜</head>内にjquery.min.jsのCDN(もしくはダウンロード)とbgswitcher.js格納先を追加する。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="サイトのURL/js/jquery.bgswitcher.js"></script>
<body>〜</body>内の表示したい場所に以下のHTMLコードを、CSSを設定する。
<div class="bg-slider">
<h1 class="bg-slider_title">MEMORANDUM<br>jQuery<br>BgSwitcher.js</h1>
</div>
背景なので画像に縦横比率を変えないような指定ができないので「::before」でコンテナでの縦横比率を設定する。親要素で幅を指定して、子要素で高さ比率を指定。なんとなく理解できたようなできていないような…。手法として覚えておく。
.bg-slider {/*背景画像表示の設定*/
align-items: center;/*フレックスコンテナのクロス軸の中央に揃える*/
background-position: center center;/*画像背景を上下中央に配置*/
background-size: cover;/*画像をコンテナーいっぱいに大きく拡大縮小*/
display:flex;/*フレックスボックスを利用*/
justify-content: center;/*アイテムを中央に寄せる*/
width: 100%;/*幅100%*/
}
.bg-slider::before {
content: "";/*何も表示しない*/
display: block;/*親要素の大きさが継承され1つのブロックとして認識*/
padding-top: 70%; /* 比率を指定 */
}
.bg-slider_title {/*表示させたい文字の設定*/
color: #ccc;
font-family:'Montserrat', sans-serif;
font-size: 450%;
font-weight: 700;
line-height: 1.0em;
padding-top: 0px;/*何も設定しなければ上下中央*/
text-align: center;
}
スライドさせたい画像の格納先とスライド動作オプションなどを以下スクリプトで指定する。オプションのデモは以下ページに詳しく説明されている。
<script>
jQuery(function($) {
$('.bg-slider').bgSwitcher({//HTMLで設定しているCLASS名に合わせる
images: ['サイトのURL/img/slide-6.png','サイトのURL/img/slide-5.png','サイトのURL/img/slide-7.png'], // 切り替える背景画像を指定
interval: 10000, // 背景画像を切り替える間隔を指定 3000=3秒
loop: true, // 切り替えを繰り返すか指定 true=繰り返す false=繰り返さない
shuffle: false, // 背景画像の順番をシャッフルするか指定 true=する false=しない
effect: "fade", // エフェクトの種類をfade,blind,clip,slide,drop,hideから指定
duration: 4000, // エフェクトの時間を指定します。
easing: "linear" // エフェクトのイージングをlinear,swingから指定
});
});
</script>
Swiperでも同じような動作が可能でjQuery不要だ。大きな差は感じないけど、どちらかというとBgSwitcherの方が動きがなめらかかな気がする。ちなみにSwiperでは記事のサムネール画像を使ってスライドさせている。
NOTICES
- 記事内容は実装させたものがほとんどですが自己責任で参考にしてください。