HTML/CSSだけでカルーセルを作る方法【HTML/CSS・サンプルコード付き】

カルーセル

HTML/CSSだけでカルーセルを作る方法

HTML/CSSだけでカルーセルを作る方法を紹介します。このサンプルでは、JavaScriptを使用せず、HTMLのラジオボタンとlabel要素、CSSの:checkedを組み合わせてカードを1枚ずつ切り替えます。左右の操作ボタンまたは下部のドットをクリックすると、選択したカードへ切り替わる仕組みです。

商品紹介、サービス案内、実績一覧、スタッフ紹介、キャンペーン情報など、複数のカードを限られたスペースへまとめて表示したい場面で活用できます。現在表示しているカードに対応したドットだけを青色で強調し、最初と最後では進めない方向のボタンを無効状態で表示するため、利用者にも現在位置が分かりやすい構成です。

タイトル、説明文、各カードの見出しと本文はHTMLから変更できます。CSSではカルーセル全体の横幅、余白、背景色、枠線、角丸、カードの高さ、ボタンサイズ、ドットサイズ、切り替え速度などを調整できます。レスポンシブにも対応しているため、スマートフォン・タブレット・PCで利用しやすいカルーセルとして導入できます。

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

デモ

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

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

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

  <!-- スマートフォン表示対応 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>HTML/CSSだけでカルーセル</title>

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

</head>
<body>

  <!-- カルーセル全体 -->
  <div class="html-css-carousel_wrap">

    <!-- タイトル -->
    <div class="html-css-carousel_title">
      HTML/CSSだけで動くカルーセル
    </div>

    <!-- 説明文 -->
    <p class="html-css-carousel_text">
      左右のボタンまたはドットをクリックすると、カードを1枚ずつ切り替えられます。
    </p>

    <!-- 表示するカードを管理するラジオボタン -->
    <input
      class="html-css-carousel_input"
      type="radio"
      name="html-css-carousel"
      id="html-css-carousel-1"
      checked>

    <input
      class="html-css-carousel_input"
      type="radio"
      name="html-css-carousel"
      id="html-css-carousel-2">

    <input
      class="html-css-carousel_input"
      type="radio"
      name="html-css-carousel"
      id="html-css-carousel-3">

    <!-- カルーセル表示エリア -->
    <div class="html-css-carousel_area">

      <!-- 1枚目表示時の操作ボタン -->
      <div class="html-css-carousel_controls html-css-carousel_controls-1">

        <span class="html-css-carousel_button html-css-carousel_button-disabled">
          ‹
        </span>

        <label
          class="html-css-carousel_button"
          for="html-css-carousel-2"
          aria-label="次のカードを表示">
          ›
        </label>

      </div>

      <!-- 2枚目表示時の操作ボタン -->
      <div class="html-css-carousel_controls html-css-carousel_controls-2">

        <label
          class="html-css-carousel_button"
          for="html-css-carousel-1"
          aria-label="前のカードを表示">
          ‹
        </label>

        <label
          class="html-css-carousel_button"
          for="html-css-carousel-3"
          aria-label="次のカードを表示">
          ›
        </label>

      </div>

      <!-- 3枚目表示時の操作ボタン -->
      <div class="html-css-carousel_controls html-css-carousel_controls-3">

        <label
          class="html-css-carousel_button"
          for="html-css-carousel-2"
          aria-label="前のカードを表示">
          ‹
        </label>

        <span class="html-css-carousel_button html-css-carousel_button-disabled">
          ›
        </span>

      </div>

      <!-- カード表示枠 -->
      <div class="html-css-carousel_view">

        <!-- カード一覧 -->
        <div class="html-css-carousel_track">

          <!-- 1枚目のカード -->
          <div class="html-css-carousel_card">

            <div class="html-css-carousel_card-title">
              HTML
            </div>

            <p class="html-css-carousel_card-text">
              HTMLでカルーセル全体と表示するカードを配置します。
            </p>

          </div>

          <!-- 2枚目のカード -->
          <div class="html-css-carousel_card">

            <div class="html-css-carousel_card-title">
              CSS
            </div>

            <p class="html-css-carousel_card-text">
              CSSでカード、ボタン、ドットのデザインを設定します。
            </p>

          </div>

          <!-- 3枚目のカード -->
          <div class="html-css-carousel_card">

            <div class="html-css-carousel_card-title">
              サンプル
            </div>

            <p class="html-css-carousel_card-text">
              ラジオボタンの選択状態を利用してカードを切り替えます。
            </p>

          </div>

        </div>

      </div>

    </div>

    <!-- ドットナビゲーション -->
    <div class="html-css-carousel_dots">

      <label
        class="html-css-carousel_dot"
        for="html-css-carousel-1"
        aria-label="1枚目のカードを表示">
      </label>

      <label
        class="html-css-carousel_dot"
        for="html-css-carousel-2"
        aria-label="2枚目のカードを表示">
      </label>

      <label
        class="html-css-carousel_dot"
        for="html-css-carousel-3"
        aria-label="3枚目のカードを表示">
      </label>

    </div>

  </div>

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

ファイル構成と設置方法

このサンプルはHTMLとCSSの2ファイルで構成されています。HTMLではラジオボタンを利用して現在表示するカードを切り替え、左右ボタンやドットをクリックすると対応するカードへ移動できます。CSSでは:checkedを利用してカードの表示位置や操作ボタン、ドットの状態を切り替えるため、JavaScriptを使用せずにカルーセルを実現しています。

sample/
├── index.html
└── style.css

各ファイルの役割
index.htmlはカルーセル全体を構成するファイルです。タイトル、説明文、カードのタイトル・本文、左右ボタン、ドットナビゲーションを編集できます。カードの追加や削除もこのファイルで行います。

style.cssはカルーセル全体のデザインと動作を設定するファイルです。レイアウト、カードサイズ、背景色、ボタン、ドット、切り替えアニメーション、レスポンシブ表示などを変更できます。

設置方法・使い方
sampleフォルダへindex.htmlとstyle.cssを配置します。2つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。左右ボタンまたはドットをクリックすると、JavaScriptを使用せずにカードを切り替えられます。

カスタマイズできる内容
index.htmlではタイトル、説明文、各カードのタイトル・本文、カード枚数、左右ボタン、ドットナビゲーションを変更できます。用途に合わせて商品紹介、サービス案内、お知らせ、実績紹介などさまざまなカルーセルへ変更できます。

style.cssではカルーセル全体の横幅、背景色、余白、角丸、カードサイズ、文字サイズ、ボタンサイズ、ドットサイズ、アニメーション速度などを変更できます。

数値調整
style.css
max-width:760px;
カルーセル全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

margin:40px auto;
カルーセル全体の上下余白です。値を変更すると上下の間隔が変わります。

padding:32px;
カルーセル全体の内側余白です。値を大きくすると余白が広がり、小さくすると詰まった表示になります。

border-radius:18px;
カルーセル全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

padding:0 70px;
左右ボタンを配置するための余白です。値を変更するとボタンとカードの間隔が変わります。

min-height:220px;
カードの最小高さです。値を大きくすると高さが増え、小さくするとコンパクトになります。

padding:36px;
カード内部の余白です。値を変更すると文字と枠線の間隔が変わります。

width:52px;
height:52px;
左右ボタンのサイズです。値を変更するとボタンの大きさが変わります。

font-size:30px;
カードタイトルの文字サイズです。値を大きくすると文字が大きくなり、小さくすると控えめになります。

width:12px;
height:12px;
ドットナビゲーションのサイズです。値を変更するとドットの大きさが変わります。

gap:10px;
ドット同士の間隔です。値を大きくすると間隔が広がり、小さくすると狭くなります。

transition:transform .3s ease;
カードの切り替え速度です。0.3秒で切り替わります。値を大きくするとゆっくり、小さくすると速く切り替わります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:760pxにより画面幅に合わせてカルーセル全体が縮小されます。また、640px以下ではpadding、ボタンサイズ、カードの高さ、文字サイズを調整しているため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント