クリックすると枠線を強調するセレクトボックスを作る方法
クリックすると枠線を強調するセレクトボックスを作る方法を紹介します。このサンプルでは3つのセレクトボックスを配置し、クリックやキーボード操作でフォーカスが当たった項目だけを強く目立たせます。通常時と操作中の状態を明確に分けることで、現在どの項目を入力しているのかを確認しやすくできます。
フォーカス時には枠線を濃い青色へ変更し、外側へ青いリングと影を表示します。さらに背景色も薄い青色へ切り替わるため、複数のセレクトボックスが並んでいても操作中の項目を見失いにくいデザインです。別のセレクトボックスを選ぶと、強調表示も新しくフォーカスされた項目へ移動します。
お問い合わせ画面、会員登録フォーム、ECサイトの注文画面、配送先設定、管理画面など、複数の選択項目を入力するフォームで利用できます。HTMLとCSSだけで実装でき、枠線色、強調リングの太さ、影の広がり、背景色、角丸なども用途に合わせて変更できます。マウス操作だけでなくキーボード操作でもフォーカス位置を確認しやすい構成です。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
各セレクトボックスをクリックすると、操作中の項目だけが強く表示されます。
別のセレクトボックスをクリックすると、枠線・背景色・外側のリング・影による強調表示が移動します。
3つのセレクトボックスを順番にクリックし、現在フォーカスされている項目だけが強調表示される動作を確認できます。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コードをUTF-8へ設定 -->
<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="focus-border-select-box">
<!-- フォームのタイトル -->
<div class="focus-border-select-box_title">
注文内容を選択
</div>
<!-- セレクトボックスの操作方法を案内する説明文 -->
<p class="focus-border-select-box_text">
操作中のセレクトボックスだけ枠線と外側のリングが強調されます。
</p>
<!-- 3つのセレクトボックスをまとめる一覧 -->
<div class="focus-border-select-box_list">
<!-- 都道府県の選択項目 -->
<div class="focus-border-select-box_item">
<!-- 都道府県セレクトボックスのラベル -->
<label
class="focus-border-select-box_label"
for="prefecture">
都道府県
</label>
<!-- 都道府県セレクトボックスと独自矢印を囲む要素 -->
<div class="focus-border-select-box_wrap">
<!-- 都道府県を選択するセレクトボックス -->
<select
class="focus-border-select-box_select"
id="prefecture"
name="prefecture">
<!-- 初期表示する案内項目 -->
<option value="">選択してください</option>
<!-- 都道府県の選択肢 -->
<option value="hokkaido">北海道</option>
<option value="tokyo">東京都</option>
<option value="osaka">大阪府</option>
<option value="fukuoka">福岡県</option>
</select>
</div>
</div>
<!-- 配送方法の選択項目 -->
<div class="focus-border-select-box_item">
<!-- 配送方法セレクトボックスのラベル -->
<label
class="focus-border-select-box_label"
for="delivery">
配送方法
</label>
<!-- 配送方法セレクトボックスと独自矢印を囲む要素 -->
<div class="focus-border-select-box_wrap">
<!-- 配送方法を選択するセレクトボックス -->
<select
class="focus-border-select-box_select"
id="delivery"
name="delivery">
<!-- 初期表示する案内項目 -->
<option value="">選択してください</option>
<!-- 配送方法の選択肢 -->
<option value="normal">通常配送</option>
<option value="express">お急ぎ便</option>
<option value="date">日時指定便</option>
</select>
</div>
</div>
<!-- 支払い方法の選択項目 -->
<div class="focus-border-select-box_item">
<!-- 支払い方法セレクトボックスのラベル -->
<label
class="focus-border-select-box_label"
for="payment">
支払い方法
</label>
<!-- 支払い方法セレクトボックスと独自矢印を囲む要素 -->
<div class="focus-border-select-box_wrap">
<!-- 支払い方法を選択するセレクトボックス -->
<select
class="focus-border-select-box_select"
id="payment"
name="payment">
<!-- 初期表示する案内項目 -->
<option value="">選択してください</option>
<!-- 支払い方法の選択肢 -->
<option value="card">クレジットカード</option>
<option value="bank">銀行振込</option>
<option value="cod">代金引換</option>
</select>
</div>
</div>
</div>
<!-- フォーカス表示の動作を説明する補足文 -->
<p class="focus-border-select-box_note">
別のセレクトボックスへ移動すると、強調表示も操作中の項目へ移動します。
</p>
</div>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルはHTMLとCSSの2ファイルで構成されています。3つのセレクトボックスを配置し、クリックして操作中になった項目だけを枠線・背景色・外側のリングで強調表示します。HTMLのみでフォームを構成し、フォーカス時の見た目はCSSだけで実装しているため、JavaScriptを使用せずに導入できます。
sample/
├── index.html
└── style.css
各ファイルの役割
index.htmlはフォーム全体と3つのセレクトボックスを配置しています。ラベルや選択肢を編集すると、表示内容を自由に変更できます。
style.cssはレイアウトや配色、セレクトボックスのデザイン、フォーカス時の強調表示、レスポンシブ対応を設定しています。枠線や背景色、影などの見た目はすべてこのファイルで変更できます。
設置方法・使い方
sampleフォルダへindex.htmlとstyle.cssを配置し、index.htmlをブラウザで開くだけで利用できます。セレクトボックスをクリックすると、その項目だけが強調表示されます。別のセレクトボックスをクリックすると、強調表示も自動で移動します。
カスタマイズできる内容
style.cssではセレクトボックスの背景色、文字色、枠線の色、角丸、影、フォーカス時のリング、余白、文字サイズなどを変更できます。
index.htmlではラベル名や選択項目を自由に変更できるため、お問い合わせフォーム、会員登録画面、注文画面、管理画面など用途に合わせて利用できます。
数値調整
style.cssのborder:2px solidは通常時の枠線です。最初の数値を大きくすると枠線が太くなります。
border-radius:12px;は角丸の大きさです。値を大きくすると角が丸くなります。
box-shadow:0 0 0 4px rgba(…);はフォーカス時の強調リングです。3つ目の数値を大きくするとリングが太くなり、rgbaの最後の値を大きくすると色が濃くなります。
outline:2px solidはフォーカス時の外枠です。最初の数値を大きくすると外枠が太くなります。
transition:0.2s;はアニメーション時間です。0.2秒で切り替わり、値を大きくするとゆっくり、小さくすると速く切り替わります。
レスポンシブ対応
style.cssではmedia queryを使用し、640px以下で余白や文字サイズ、セレクトボックスの内側余白を調整しています。また、width:100%とmax-widthを使用しているため、スマートフォン・タブレット・PCでも画面幅に応じてレイアウトが崩れにくい構成になっています。
コメント