HTML/CSSだけでカルーセルを作る方法
HTML/CSSだけでカルーセルを作る方法を紹介します。このサンプルでは、JavaScriptを使用せず、HTMLのラジオボタンとlabel要素、CSSの:checkedを組み合わせてカードを1枚ずつ切り替えます。左右の操作ボタンまたは下部のドットをクリックすると、選択したカードへ切り替わる仕組みです。
商品紹介、サービス案内、実績一覧、スタッフ紹介、キャンペーン情報など、複数のカードを限られたスペースへまとめて表示したい場面で活用できます。現在表示しているカードに対応したドットだけを青色で強調し、最初と最後では進めない方向のボタンを無効状態で表示するため、利用者にも現在位置が分かりやすい構成です。
タイトル、説明文、各カードの見出しと本文はHTMLから変更できます。CSSではカルーセル全体の横幅、余白、背景色、枠線、角丸、カードの高さ、ボタンサイズ、ドットサイズ、切り替え速度などを調整できます。レスポンシブにも対応しているため、スマートフォン・タブレット・PCで利用しやすいカルーセルとして導入できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
左右のボタンまたはドットをクリックすると、カードを1枚ずつ切り替えられます。
HTMLでカルーセル全体と表示するカードを配置します。
CSSでカード、ボタン、ドットのデザインを設定します。
ラジオボタンの選択状態を利用してカードを切り替えます。
左右のボタンまたはドットをクリックすると、HTMLとCSSだけで3枚のカードを切り替えられます。
コードをコピーして使おう!
<!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で利用できます。
コメント