立体的なくぼみがあるチェックボックスを作る方法
立体的なくぼみがあるチェックボックスを作る方法を紹介します。このサンプルではHTMLとCSSだけを使用し、通常の四角いチェックボックスとは異なる、円形で厚みのある立体的なチェックボックスを表示します。外周は盛り上がったような形にし、中央には一段へこんだように見える円形のくぼみを配置することで、押し込めるボタンのような見た目にしています。
チェックボックスをクリックすると、中央のくぼみ部分だけが青色へ変化します。一般的なチェックマークは表示せず、中央部分の色の変化だけで選択状態を確認できるデザインです。「HTML」「CSS」「JavaScript」の3項目を横並びで配置しており、それぞれ個別にチェックを入れたり外したりできます。また、マウスを乗せたときには少し浮き上がり、押している間は沈み込むような動きも確認できます。
CSSではボタンの大きさ、外周と中央部分の色、くぼみの深さを表現する影、ボタン全体の厚み、項目同士の間隔などを変更できます。チェック状態の切り替えにはHTMLのチェックボックスとCSSの:checkedを使用しているため、JavaScriptは必要ありません。画面幅に合わせて項目の幅や間隔を調整するレスポンシブ対応も行っており、スマートフォン・タブレット・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="three-dimensional-checkbox_wrap">
<!-- タイトル -->
<div class="three-dimensional-checkbox_title">
立体的なチェックボックス
</div>
<!-- 説明文 -->
<p class="three-dimensional-checkbox_text">
立体的なボタンをクリックすると、中央のくぼみ部分の色が変わります。
</p>
<!-- チェックボックス一覧 -->
<div class="three-dimensional-checkbox_list">
<!-- HTML -->
<div class="three-dimensional-checkbox_item">
<input
class="three-dimensional-checkbox_input"
type="checkbox"
id="three-dimensional-checkbox-html">
<label
class="three-dimensional-checkbox_label"
for="three-dimensional-checkbox-html">
<span
class="three-dimensional-checkbox_button"
aria-hidden="true">
</span>
<span class="three-dimensional-checkbox_name">
HTML
</span>
</label>
</div>
<!-- CSS -->
<div class="three-dimensional-checkbox_item">
<input
class="three-dimensional-checkbox_input"
type="checkbox"
id="three-dimensional-checkbox-css">
<label
class="three-dimensional-checkbox_label"
for="three-dimensional-checkbox-css">
<span
class="three-dimensional-checkbox_button"
aria-hidden="true">
</span>
<span class="three-dimensional-checkbox_name">
CSS
</span>
</label>
</div>
<!-- JavaScript -->
<div class="three-dimensional-checkbox_item">
<input
class="three-dimensional-checkbox_input"
type="checkbox"
id="three-dimensional-checkbox-javascript">
<label
class="three-dimensional-checkbox_label"
for="three-dimensional-checkbox-javascript">
<span
class="three-dimensional-checkbox_button"
aria-hidden="true">
</span>
<span class="three-dimensional-checkbox_name">
JavaScript
</span>
</label>
</div>
</div>
</div>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルはHTMLとCSSの2ファイルで構成されています。HTMLでは「HTML」「CSS」「JavaScript」の3つのチェック項目を配置し、CSSでは円形ボタンの外周に厚みを付け、中央部分を内側へくぼんだように表示します。チェック状態の切り替えにはJavaScriptを使用せず、HTMLのチェックボックスとCSSの:checkedを利用しています。
sample/
├── index.html
└── style.css
各ファイルの役割
index.htmlはチェックボックス全体を構成するファイルです。「HTML」「CSS」「JavaScript」の3つの項目を配置し、それぞれにinput type="checkbox"とlabel要素を使用しています。項目名を変更したい場合は、three-dimensional-checkbox_name内の文字を編集します。項目を追加する場合は、three-dimensional-checkbox_itemのまとまりを追加し、input要素のidとlabel要素のforを同じ値に設定します。
style.cssはチェックボックス全体のレイアウトと立体的なデザインを設定するファイルです。円形ボタン本体にはグラデーションと影を付け、::beforeで中央のくぼみ部分を作っています。チェックされた項目は:checkedによって中央のくぼみだけが青色へ変化します。ホバー時にはボタンが少し上へ移動し、押している間は下へ移動します。
設置方法・使い方
sampleフォルダへindex.htmlとstyle.cssを同じ階層で配置します。2つのファイルを保存したあと、sample/index.htmlをブラウザで開いてください。「HTML」「CSS」「JavaScript」の各円形ボタンまたは項目名をクリックすると、それぞれ個別にチェック状態を切り替えられます。チェックすると中央のくぼみ部分が青色になり、もう一度クリックすると元の色へ戻ります。
カスタマイズできる内容
index.htmlでは「HTML」「CSS」「JavaScript」の項目名を変更できます。また、three-dimensional-checkbox_itemを追加・削除・並び替えることで、チェック項目の件数や表示順を変更できます。
style.cssではチェックボックス全体の最大横幅、背景色、余白、角丸のほか、円形ボタンの大きさ、外周の色、中央のくぼみ部分の大きさや色、影、項目同士の間隔、文字サイズを変更できます。チェック時の中央部分の色は、.three-dimensional-checkbox_input:checked + .three-dimensional-checkbox_label .three-dimensional-checkbox_button::beforeのbackgroundから変更できます。
数値調整
style.css
max-width:700px;
チェックボックス全体の最大横幅です。値を大きくすると全体が横に広がり、小さくするとコンパクトになります。
padding:36px 32px 42px;
チェックボックス全体の内側余白です。上36px、左右32px、下42pxを設定しています。値を大きくすると内容と外枠の間隔が広がります。
grid-template-columns:repeat(3,120px);
PC表示時のチェック項目の横幅です。120px幅の列を3つ作り、「HTML」「CSS」「JavaScript」を同じ幅で配置しています。120pxを変更すると各項目が使用する横幅が変わります。
gap:24px;
PC表示時の各チェック項目の間隔です。値を大きくすると項目同士が離れ、小さくすると近づきます。
width:44px;
height:44px;
円形ボタンの大きさです。値を大きくするとボタンが大きくなり、小さくすると小さくなります。縦横を同じ値にすると円形を維持できます。
top:6px;
right:6px;
bottom:6px;
left:6px;
円形ボタンの外周から中央のくぼみまでの距離です。現在は上下左右を6px空けています。値を大きくすると中央のくぼみが小さくなって外周部分が太くなり、小さくすると中央のくぼみが大きくなります。
box-shadow:0 4px 0 #60a5fa,0 8px 12px rgba(37,99,235,.2);
通常状態の円形ボタンに付ける厚みと影です。最初の4pxは下方向へ見せる厚みです。値を大きくするとボタンの立体感が強くなります。
box-shadow:inset 0 5px 6px rgba(15,23,42,.24),inset 0 -2px 3px rgba(255,255,255,.9);
中央部分を内側へくぼんだように見せる影です。insetによって影を内側へ表示しています。数値を変更するとくぼみの深さや影の広がりが変わります。
transition:transform .18s ease,box-shadow .18s ease;
ボタンが浮き上がったり沈み込んだりするときの変化時間です。0.18秒で変化します。値を大きくするとゆっくり、小さくすると速く変化します。
transition:background .22s ease,box-shadow .22s ease;
チェック状態が切り替わったときに、中央部分の色と影が変化する時間です。0.22秒で変化します。
transform:translateY(-2px);
マウスを乗せたときに円形ボタンを2px上へ移動します。数値を大きくすると浮き上がる距離が大きくなります。
transform:translateY(3px);
ボタンを押している間に3px下へ移動します。数値を大きくすると、より深く押し込まれたように見えます。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssでは全体にwidth:100%とmax-width:700pxを設定し、画面幅に合わせて縮小できるようにしています。640px以下では全体のpaddingを28px 18px 34pxへ変更し、各項目を90px幅、項目同士の間隔を12px、項目名の文字サイズを13pxへ調整します。さらに360px以下ではgrid-template-columns:1frへ切り替え、3つの項目を縦1列で表示します。スマートフォン・タブレット・PCで利用できます。
コメント