自動再生する画像スライダーを作る方法
画像を一定時間ごとに自動で切り替える画像スライダーを作る方法を紹介します。このサンプルでは、1枚の画像を表示し、3秒ごとに次の画像へ自動でスライドします。最後の画像まで進むと1枚目へ戻るループ式になっているため、ユーザーが操作しなくても複数の画像を繰り返し表示できます。
自動再生だけでなく、画像の左右に配置した操作ボタンをクリックして前後の画像へ移動することもできます。画像の下には現在表示している位置を示すドットを配置し、ドットをクリックすると対応する画像へ直接切り替えられます。手動で画像を切り替えた場合は自動再生の待ち時間をリセットするため、操作直後にすぐ次の画像へ進んでしまうことを防げます。
HTMLでは画像、左右の操作ボタン、SVGアイコン、ドットを配置し、CSSでは画像の大きさや角丸、スライドアニメーション、ボタンやドットのデザインを設定します。JavaScriptでは現在表示している画像番号を管理し、3秒間隔の自動再生、前後へのループ移動、ドットによる画像切り替えを行います。メインビジュアルや写真ギャラリー、商品画像など、複数の画像を自動で順番に見せたい場面に利用できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
画像は3秒ごとに自動で1枚ずつ切り替わり、最後の画像まで進むと1枚目へ戻ります。左右のボタンから前後の画像へ移動でき、下のドットをクリックすると対応する画像を直接表示できます。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>自動再生する画像スライダー</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- 自動再生する画像スライダー -->
<div class="auto-image-slider_slider">
<!-- スライダー全体 -->
<div class="auto-image-slider_area">
<!-- 前の画像へ移動するボタン -->
<button class="auto-image-slider_button auto-image-slider_prev" type="button" aria-label="前の画像">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M15 18l-6-6 6-6"></path>
</svg>
</button>
<!-- 画像表示エリア -->
<div class="auto-image-slider_view">
<!-- 横方向へ移動する画像一覧 -->
<div class="auto-image-slider_track">
<!-- 1枚目の画像 -->
<div class="auto-image-slider_slide">
<img src="images/image1.png" alt="1枚目の画像">
</div>
<!-- 2枚目の画像 -->
<div class="auto-image-slider_slide">
<img src="images/image2.png" alt="2枚目の画像">
</div>
<!-- 3枚目の画像 -->
<div class="auto-image-slider_slide">
<img src="images/image3.png" alt="3枚目の画像">
</div>
</div>
</div>
<!-- 次の画像へ移動するボタン -->
<button class="auto-image-slider_button auto-image-slider_next" type="button" aria-label="次の画像">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M9 6l6 6-6 6"></path>
</svg>
</button>
</div>
<!-- 画像位置を表すドット -->
<div class="auto-image-slider_dots">
<button class="auto-image-slider_dot is-active" type="button" aria-label="1枚目の画像を表示">
</button>
<button class="auto-image-slider_dot" type="button" aria-label="2枚目の画像を表示">
</button>
<button class="auto-image-slider_dot" type="button" aria-label="3枚目の画像を表示">
</button>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。
InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。
ファイル構成と設置方法
このサンプルは、HTML・CSS・JavaScriptの3ファイルと、スライダーで使用する3枚の画像を組み合わせて使用します。ダウンロードできるZIPにはHTML・CSS・JavaScriptが含まれます。画像ファイルは含まれていないため、使用する画像を用意してimagesフォルダへ配置してください。
sample/
├── index.html
├── style.css
├── script.js
└── images/
├── image1.png
├── image2.png
└── image3.png
index.htmlには、3枚の画像、左右の操作ボタン、SVGの矢印アイコン、現在位置を表す3つのドットを配置しています。style.cssでは、画像の大きさや角丸、横方向のスライドアニメーション、左右ボタン、SVGアイコン、ドットなどのデザインを設定しています。script.jsでは、現在表示している画像番号を管理し、3秒ごとの自動再生、左右ボタンによる前後への移動、ドットによる直接切り替え、最後の画像と1枚目をつなぐループ処理を行います。imagesフォルダには、スライダーで表示する画像を配置します。image1.png・image2.png・image3.pngは利用者側で用意する画像で、ZIPには含まれていません。
設置方法・使い方
sampleフォルダ内にindex.html・style.css・script.jsを配置し、同じ階層にimagesフォルダを作成します。imagesフォルダには、使用する3枚の画像をimage1.png・image2.png・image3.pngという名前で配置してください。画像のファイル名や拡張子を変更する場合は、index.html内のimg要素のsrc属性も実際のファイルに合わせて変更します。ファイルを配置したあとindex.htmlをブラウザで開くと、1枚目の画像から表示され、3秒ごとに自動で次の画像へ切り替わります。
カスタマイズできる内容
表示する画像はindex.html内のimg要素から変更できます。画像を追加する場合は、auto-image-slider_slideを追加し、それに対応するauto-image-slider_dotも追加してください。alt属性には、それぞれの画像内容に合った説明を設定します。左右ボタンの矢印はSVGのpath要素で作成しているため、別のSVGアイコンへ変更することもできます。ボタンやドットの色、画像の角丸、画像の高さ、スライド速度、自動再生の間隔などはCSSとJavaScriptから調整できます。
数値調整
ページ全体はbodyのpaddingを40px 20pxに設定しています。auto-image-slider_sliderのmax-widthは760pxで、PC表示時のスライダー全体の最大幅を指定しています。auto-image-slider_areaのgapは18pxで、画像と左右ボタンの間隔です。左右ボタンは52px四方、SVGアイコンは24px四方、stroke-widthは2です。画像表示部分と各画像のborder-radiusは18px、スライドアニメーションは0.3秒、PCでの画像高さは360pxです。ドットは12px四方、ドット間のgapは10px、画像からドットまでのmargin-topは24pxです。
JavaScriptのsetIntervalに指定している3000は、自動で次の画像へ切り替えるまでの時間をミリ秒で指定しています。3000は3秒、5000に変更すると5秒ごとの自動再生になります。画像の移動量は1枚につき100%で、現在の画像番号に100を掛けた値だけ横方向へ移動します。最初の画像番号は0で、最後の画像を超えると0へ戻り、1枚目より前へ移動すると画像数から1を引いた最後の画像番号へ移動します。左右ボタンやドットを操作した場合はタイマーを一度リセットし、設定した待ち時間から自動再生を再開します。
レスポンシブ対応
スライダー本体はwidth:100%とmax-width:760pxを組み合わせているため、画面が狭くなると利用できる横幅に合わせて縮小します。画面幅640px以下では、ページ余白を24px 12px、画像とボタンの間隔を8px、左右ボタンを42px四方、SVGアイコンを22px四方、画像の高さを220pxへ変更します。これにより、スマートフォン・タブレット・PCで画像と操作ボタンを画面幅に合わせて表示できます。
コメント