クリックで裏表が切り替わるカードを作る方法
クリックで上下左右に裏表が切り替わるカードを作る方法を紹介します。カードをクリックすると表面から裏面へ切り替わり、もう一度クリックすると元の表面へ戻るカードUIを作成できます。このサンプルでは、左右方向に回転するカードと、上下方向に回転するカードの2種類を用意しています。
HTMLでカードの表面と裏面を用意し、CSSのrotateY(180deg)で左右回転、rotateX(180deg)で上下回転を設定します。JavaScriptでは、クリックしたカードに表示用クラスを付け外しして、表面と裏面を切り替えます。複数のカードをまとめて扱えるため、カード一覧にも応用しやすい構成です。
商品紹介、プロフィールカード、サービス紹介、Q&A、補足情報の表示など、限られたスペースで2つの情報を切り替えたい場面に便利です。表面と裏面のテキスト、背景色、カードサイズ、角丸、影、回転速度などはCSSから変更できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
左右回転・表面
クリックすると左右方向に裏返ります。
左右回転・裏面
もう一度クリックすると表面へ戻ります。
上下回転・表面
クリックすると上下方向に裏返ります。
上下回転・裏面
もう一度クリックすると表面へ戻ります。
このデモでは、カードをクリックすると表面と裏面が切り替わる動作を確認できます。左右回転はrotateY(180deg)、上下回転はrotateX(180deg)を使用しています。
コードをコピーして使おう!
<!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="click-flip-card_demo">
<!-- 左右方向に裏返るカード -->
<div class="click-flip-card_card">
<!-- 回転するカード内側 -->
<div class="click-flip-card_inner">
<!-- カード表面 -->
<div class="click-flip-card_front">
<h3>左右回転・表面</h3>
<p>クリックすると左右方向に裏返ります。</p>
</div>
<!-- カード裏面 -->
<div class="click-flip-card_back">
<h3>左右回転・裏面</h3>
<p>もう一度クリックすると表面へ戻ります。</p>
</div>
</div>
</div>
<!-- 上下方向に裏返るカード -->
<div class="click-flip-card_card click-flip-card_card-vertical">
<!-- 回転するカード内側 -->
<div class="click-flip-card_inner">
<!-- カード表面 -->
<div class="click-flip-card_front">
<h3>上下回転・表面</h3>
<p>クリックすると上下方向に裏返ります。</p>
</div>
<!-- カード裏面 -->
<div class="click-flip-card_back">
<h3>上下回転・裏面</h3>
<p>もう一度クリックすると表面へ戻ります。</p>
</div>
</div>
</div>
</div>
<!-- JavaScriptファイルを読み込み -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではカードの表面と裏面を配置し、CSSではカードのデザインや3D回転アニメーションを設定します。JavaScriptではクリック操作を検知し、カードへクラスを付け替えることで表面と裏面を切り替えます。外部ライブラリを使用せず、シンプルな構成で導入できるサンプルです。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlはカード全体の構造を作成するファイルです。表面と裏面の見出しや説明文を自由に変更できます。
style.cssはカードの大きさ、背景色、文字色、余白、角丸、影、3D回転アニメーションを設定するファイルです。左右回転と上下回転の両方をCSSだけで切り替えています。
script.jsはカードをクリックしたときに表面と裏面を切り替える処理を担当します。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。カードをクリックすると3D回転しながら裏面が表示され、もう一度クリックすると表面へ戻ります。
カスタマイズできる内容
index.htmlではカードのタイトルや説明文を自由に変更できます。カードを追加すると、同じ動作をするカードを増やすこともできます。
style.cssではカードの横幅、高さ、背景色、文字色、角丸、影、回転時間などを用途に合わせて調整できます。また、左右回転と上下回転の表示方法も変更できます。
script.jsではクリック時の切り替え処理を変更したり、動作条件を追加したりできます。
数値調整
style.css
width:320px;
カードの横幅です。値を大きくすると横長になり、小さくするとコンパクトになります。
height:220px;
カードの高さです。値を大きくすると縦に大きくなり、小さくすると低く表示されます。
padding:28px 24px;
カード内側の余白です。値を大きくすると文字との間隔が広がります。
border-radius:18px;
カードの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
perspective:1000px;
3D回転の奥行きです。値を小さくすると立体感が強くなり、大きくすると控えめになります。
transition:transform .6s;
カードが裏返る時間です。.6秒を大きくするとゆっくり回転し、小さくすると速く切り替わります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssではGridレイアウトを使用し、PCでは2枚のカードを横並び、720px以下では1列表示へ自動で切り替えます。また、カードはwidth:100%とmax-width:320pxを使用しているため、スマートフォン・タブレット・PCで利用できます。
コメント