タブで画像を切り替える方法
タブで画像を切り替える方法を紹介します。このサンプルでは、複数のタブをクリックすると、選択したタブに対応する画像へ表示内容が切り替わります。画像をすべて並べて表示する必要がないため、限られたスペースの中で複数の写真やイメージを整理して見せたい場合に利用できます。
商品のカラーごとの画像、場所ごとの写真、制作実績、施設案内、カテゴリー別のイメージなど、項目ごとに異なる画像を見せたい場面に適しています。現在選択しているタブは青色で表示されるため、どの画像を表示しているのかも分かりやすく確認できます。JavaScriptではクリックされたタブの番号を取得し、対応する画像だけを表示します。
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>タブで画像を切り替える</title>
<!-- CSSファイルを読み込み -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- 画像タブ切り替え全体 -->
<div class="tab-image-switch_wrap">
<!-- タイトル -->
<div class="tab-image-switch_title">
タブで画像を切り替える
</div>
<!-- 説明文 -->
<p class="tab-image-switch_text">
タブをクリックすると、対応する画像へ切り替わります。
</p>
<!-- タブ一覧 -->
<div class="tab-image-switch_tabs" role="tablist" aria-label="画像切り替え">
<!-- 画像1タブ -->
<button
class="tab-image-switch_tab is-active"
id="tab-image-switch-tab1"
type="button"
role="tab"
aria-controls="tab-image-switch-panel1"
aria-selected="true"
data-tab="image1">
画像1
</button>
<!-- 画像2タブ -->
<button
class="tab-image-switch_tab"
id="tab-image-switch-tab2"
type="button"
role="tab"
aria-controls="tab-image-switch-panel2"
aria-selected="false"
data-tab="image2">
画像2
</button>
<!-- 画像3タブ -->
<button
class="tab-image-switch_tab"
id="tab-image-switch-tab3"
type="button"
role="tab"
aria-controls="tab-image-switch-panel3"
aria-selected="false"
data-tab="image3">
画像3
</button>
</div>
<!-- 画像1 -->
<div
class="tab-image-switch_panel is-active"
id="tab-image-switch-panel1"
role="tabpanel"
aria-labelledby="tab-image-switch-tab1"
data-panel="image1">
<img
class="tab-image-switch_image"
src="images/image1.png"
alt="画像1">
</div>
<!-- 画像2 -->
<div
class="tab-image-switch_panel"
id="tab-image-switch-panel2"
role="tabpanel"
aria-labelledby="tab-image-switch-tab2"
data-panel="image2">
<img
class="tab-image-switch_image"
src="images/image2.png"
alt="画像2">
</div>
<!-- 画像3 -->
<div
class="tab-image-switch_panel"
id="tab-image-switch-panel3"
role="tabpanel"
aria-labelledby="tab-image-switch-tab3"
data-panel="image3">
<img
class="tab-image-switch_image"
src="images/image3.png"
alt="画像3">
</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/
├── image1.png
├── image2.png
└── image3.png
各ファイルの役割
index.htmlはタブと画像を構成するファイルです。「川の景色」「丘の景色」「雪の景色」のタブと、それぞれに対応する画像を設定します。タブの文字や画像ファイル名、画像の代替テキストを変更できます。
style.cssはタブと画像表示エリアの見た目を設定するファイルです。全体の横幅や余白、タブの背景色・文字色・枠線・角丸、画像のサイズなどを変更できます。選択中のタブには専用のスタイルが適用され、現在表示している画像を確認しやすくなっています。
script.jsはタブをクリックしたときの切り替え処理を行うファイルです。クリックされたタブを選択状態に変更し、そのタブに対応する画像だけを表示します。
imagesフォルダには、タブで切り替えて表示する画像を配置します。このサンプルではimage1.png、image2.png、image3.pngの3枚を使用します。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置し、その中にimagesフォルダを作成してください。imagesフォルダには、表示したい画像をimage1.png、image2.png、image3.pngのファイル名で配置します。画像を自分で用意する場合は、HTMLに記載しているファイル名と実際の画像ファイル名を一致させてください。
ファイルを配置したあと、sample/index.htmlをブラウザで開きます。「川の景色」「丘の景色」「雪の景色」の各タブをクリックすると、選択したタブに対応する画像へ切り替わります。
カスタマイズできる内容
index.htmlでは、タブに表示する「川の景色」「丘の景色」「雪の景色」の文字を変更できます。また、src="images/image1.png"などの画像ファイル名を変更することで、任意の画像を表示できます。画像を変更する場合は、対応するaltの文章も画像内容に合わせて変更してください。
style.cssでは、タブの背景色・文字色・枠線・角丸・高さ・余白や、画像表示エリアの横幅、画像の高さなどを変更できます。選択中のタブに設定されている色を変更すれば、サイトのデザインに合わせたタブへ調整できます。
数値調整
style.css
max-width:700px;
タブと画像を含む全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
margin:40px auto;
全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
全体の内側余白です。値を大きくすると内容と外側の間隔が広がり、小さくすると狭くなります。
min-height:52px;
タブの最小の高さです。値を大きくするとタブが高くなり、小さくすると低くなります。
padding:14px;
タブの内側余白です。値を大きくするとタブ内の余白が広がります。
border-radius:12px 12px 0 0;
タブ上部の角丸です。12pxを大きくすると丸みが強くなり、0にすると四角になります。
margin-left:6px;
隣り合うタブ同士の間隔です。値を大きくするとタブの間隔が広がります。
transition:0.3s;
タブの背景色と文字色が切り替わる時間です。0.3秒で変化し、値を大きくするとゆっくり、小さくすると速く切り替わります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:700pxによって、画面幅に合わせて全体が縮小されます。画像もwidth:100%で表示するため、親要素の横幅に合わせてサイズが調整されます。さらに640px以下では全体の余白やタブの高さ、文字サイズなどを小さくしているため、スマートフォン・タブレット・PCで利用できます。
コメント