キーボード操作でスライドする画像スライダーを作る方法【HTML/CSS/JavaScript・サンプルコード付き】

スライダー

キーボード操作でスライドする画像スライダーを作る方法

キーボード操作でスライドする画像スライダーをHTML・CSS・JavaScriptで作る方法を紹介します。左右の矢印キーを押すことで画像を切り替えられるため、マウス操作だけに頼らない画像スライダーを実装できます。

このサンプルでは、画像を横並びに配置し、JavaScriptでキーボード入力を検知して前後の画像へ移動します。左矢印キーで前の画像へ、右矢印キーで次の画像へ切り替わるため、ギャラリーや作品紹介、商品画像の閲覧などにも使いやすい構成です。

表示する画像は自由に差し替えられ、スライド速度や見た目はCSSで調整できます。ボタン操作だけでなくキーボード操作にも対応したスライダーを作りたい場合に利用しやすいサンプルです。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

このデモでは、左右の矢印キーを押すと画像が切り替わります。右矢印キーで次の画像へ、左矢印キーで前の画像へ移動できます。

画像1
画像2
画像3
キーボードの← →キーで画像を切り替えられます。

コードをコピーして使おう!

<!DOCTYPE html>
<html lang="ja">
<head>

  <!-- 文字コード -->
  <meta charset="UTF-8">

  <!-- スマホ表示に対応 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>キーボード操作でスライドする画像スライダー</title>

  <!-- CSSファイルを読み込み -->
  <link rel="stylesheet" href="style.css">

</head>
<body>

  <!-- キーボード操作対応スライダー全体 -->
  <div class="keyboard-image-slider_demo">

    <!-- 画像表示エリア -->
    <div class="keyboard-image-slider_box">

      <!-- 横に動くスライド一覧 -->
      <div class="keyboard-image-slider_track" id="keyboard-image-slider-track">

        <!-- スライド1 -->
        <div class="keyboard-image-slider_slide">
          <img src="images/【ここに1枚目の画像ファイル名】" alt="画像1">
        </div>

        <!-- スライド2 -->
        <div class="keyboard-image-slider_slide">
          <img src="images/【ここに2枚目の画像ファイル名】" alt="画像2">
        </div>

        <!-- スライド3 -->
        <div class="keyboard-image-slider_slide">
          <img src="images/【ここに3枚目の画像ファイル名】" alt="画像3">
        </div>

      </div>

    </div>

    <!-- 操作説明 -->
    <div class="keyboard-image-slider_notice">
      キーボードの← →キーで画像を切り替えられます。
    </div>

  </div>

  <!-- JavaScriptファイルを読み込み -->
  <script src="script.js"></script>

</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルと、スライダーで使用する3枚の画像で構成されています。HTMLでは3枚の画像を横に並べたスライダーと操作説明を作成し、CSSでは表示エリアのサイズや枠線、角丸、スライド時のアニメーションなどを設定します。JavaScriptではキーボードの左右矢印キーを検知し、表示する画像を前後へ切り替えます。

sample/
├── index.html
├── style.css
├── script.js
└── images/
    ├── 【ここに1枚目の画像ファイル名】
    ├── 【ここに2枚目の画像ファイル名】
    └── 【ここに3枚目の画像ファイル名】

各ファイルの役割
index.htmlは画像スライダー全体を構成するファイルです。3枚の画像と「キーボードの← →キーで画像を切り替えられます。」という操作説明を配置しています。各img要素のsrcを変更することで、スライダーに表示する画像を変更できます。

style.cssはスライダーのデザインを設定するファイルです。スライダー全体の横幅、画像表示エリアの枠線、角丸、背景色、影、スライドの切り替え速度、操作説明の文字色などを変更できます。

script.jsはキーボード操作による画像切り替えを行うファイルです。右矢印キーを押すと次の画像、左矢印キーを押すと前の画像へ移動します。最後の画像から右矢印キーを押すと1枚目へ戻り、1枚目から左矢印キーを押すと最後の画像へ移動します。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置し、sample/images/へ使用する3枚の画像を保存します。index.htmlに記載されているimages/【ここに○枚目の画像ファイル名】を、実際に配置した画像ファイル名へ変更してください。

ファイルを配置したあと、sample/index.htmlをブラウザで開きます。キーボードの右矢印キー「→」を押すと次の画像へ進み、左矢印キー「←」を押すと前の画像へ戻ります。画像は1枚ずつ表示され、キーを押すたびに横方向へスライドして切り替わります。

カスタマイズできる内容
index.htmlではスライダーに表示する画像とalt属性、操作説明の文章を変更できます。画像を差し替える場合はimagesフォルダへ画像を配置し、各img要素のsrcを実際の画像ファイル名へ変更します。

style.cssではスライダー全体の最大横幅、ページの余白や背景色、画像表示エリアの枠線、角丸、背景色、影、スライドの切り替え速度、操作説明の余白や文字色を変更できます。

script.jsではArrowRightArrowLeftを使用してキーボード入力を判定しています。また、スライド数はHTML内の.keyboard-image-slider_slideから自動で取得されるため、同じ構造のスライドを追加するとJavaScript側でもその枚数が使用されます。

数値調整
style.css
padding:40px 20px;
ページ全体の内側余白です。40pxは上下、20pxは左右の余白を表します。値を大きくすると画面端との間隔が広がります。

max-width:760px;
スライダー全体の最大横幅です。値を大きくするとスライダーを広く表示でき、小さくするとコンパクトになります。

border:1px solid #dbeafe;
画像表示エリアの枠線です。1pxを大きくすると枠線が太くなり、小さくすると細くなります。

border-radius:18px;
画像表示エリアの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

box-shadow:0 10px 30px rgba(15,23,42,.08);
画像表示エリアの影です。10pxや30pxを変更すると、影の位置や広がりを調整できます。

transition:transform .45s ease;
画像が横方向へ切り替わるアニメーション時間です。.45sは0.45秒を表します。値を大きくするとゆっくり、小さくすると速く切り替わります。

flex:0 0 100%;
1枚のスライドが表示エリアの横幅100%を使用する設定です。これにより1画面に1枚の画像を表示します。

margin-top:16px;
画像表示エリアと操作説明の間隔です。値を大きくすると間隔が広がり、小さくすると狭くなります。

レスポンシブ対応
このサンプルは画面幅に合わせて縮小できる構成です。style.cssのmax-width:760pxでスライダーの最大横幅を設定し、画像にはwidth:100%height:autoを指定しているため、画面が狭くなると画像も横幅に合わせて縮小されます。さらに、各スライドをflex:0 0 100%としているため、画面幅が変わっても1画面に1枚ずつ表示できます。スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント