もくじ
CSSでチェックボックスのデザインをカスタマイズする方法を解説します。
input
タグ(チェックボックス)に疑似用を使用せずに、デザインをカスタマイズする方法を紹介しています。
【テンプレート】チェックボックスのデザインをカスタマイズ
サンプル
実装コード
HTML
Copy
<label class="checkbox_container">
<input class="checkbox" type="checkbox">
チェックボックス
</label>
CSS
Copy
.checkbox_container {
display: inline-block;
cursor: pointer;
}
/* チェック前のデザイン */
.checkbox {
appearance: none; /* デフォルトスタイルを削除 */
-webkit-appearance: none; /* Safari and Chrome */
-moz-appearance: none; /* Firefox */
margin: 0;
margin-right: 3px;
width: 15px;
height: 15px;
vertical-align: middle;
border-radius: 3px;
border-width: 1px;
border-style: solid;
border-color: #c6c6c6;
background-color: #fff;
position: relative;
top: -2px;
}
/* チェック後のデザイン */
.checkbox:checked {
border-color: #f09896;
background-color: #f09896;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%23fff" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>');
background-size: 100% auto;
background-repeat: no-repeat;
background-position: center;
}
コード解説
チェック前のデザイン
- appearance: none;
- チェックボックスのデフォルトスタイルを削除します。
これにより、カスタムスタイルが適用可能になります。
- margin: 0;
- チェックボックスの余白をリセットします。
- margin-right: 3px;
- チェックボックスの右側に3pxの余白を追加します。
- width: 15px;
- チェックボックスの幅を指定します。
- height: 15px;
- チェックボックスの高さを指定します。
- vertical-align: middle;
- チェックボックスを縦方向に中央揃えします。
- border-radius: 3px;
- 角を丸くします。
- border-width: 1px;
- ボーダーの幅を指定します。
- border-style: solid;
- ボーダーのスタイルを指定します。
- border-color: #c6c6c6;
- ボーダーの色を指定します。
- background-color: #fff;
- 背景色を設定します。
- position: relative;
top: -2px; - チェックボックスの位置を微調整します。
チェック後のデザイン
- .checkbox:checked
- チェックボックスがチェックされた状態のスタイルを指定できます。
- border-color: #f09896;
- チェックされたときのボーダーの色を指定します。
- background-color: #f09896;
- チェックされたときの背景色を指定します。
- background-image
- SVG形式のチェックマーク画像をデータURIとして埋め込んでいます。
これにより、外部画像を使用せずにチェックマークを表示できます。
SVGを使用しているため高解像度でも綺麗な表示が可能です。
- background-size: 100% auto;
- 背景画像のサイズを指定します。
幅を100%に設定し、高さは自動調整しています。
- background-repeat: no-repeat;
- 背景画像を繰り返さないようにします。
- background-position: center;
- 背景画像を中央に配置します。
チェック時のチェックボックスの背景は白色で矢印の色を変更
サンプル
実装コード
矢印の色は、SVG形式のチェックマーク画像(background-image
)のstroke="%23f09896"
で指定しています。
stroke="%23f09896"
の%23
は # 記号に対応し、f09896
が16進数カラーコードです。
HTML
Copy
<label class="checkbox_container">
<input class="checkbox2" type="checkbox">
チェックボックス
</label>
CSS
Copy
.checkbox_container {
display: inline-block;
cursor: pointer;
}
/* チェック前のデザイン */
.checkbox2 {
appearance: none; /* デフォルトスタイルを削除 */
-webkit-appearance: none; /* Safari and Chrome */
-moz-appearance: none; /* Firefox */
margin: 0;
margin-right: 3px;
width: 15px;
height: 15px;
vertical-align: middle;
border-radius: 3px;
border-width: 1px;
border-style: solid;
border-color: #f09896;
background-color: #fff;
position: relative;
top: -2px;
}
/* チェック後のデザイン */
.checkbox2:checked {
background-color: #fff;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%23f09896" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>');
background-size: 100% auto;
background-repeat: no-repeat;
background-position: center;
}
チェックボックスから矢印をはみ出させる
サンプル
実装コード
HTML
Copy
<label class="checkbox_container">
<input class="checkbox3" type="checkbox">
<span class="checkmark"></span>
チェックボックス
</label>
CSS
Copy
.checkbox_container {
display: inline-block;
cursor: pointer;
}
.checkbox3 {
margin: 0;
width: 0;
height: 0;
opacity: 0;
}
/* チェック前のデザイン */
.checkmark {
display: inline-block;
height: 15px;
width: 15px;
margin-right: 3px;
background-color: #fff;
border: 1px solid #f09896;
border-radius: 3px;
position: relative;
top: 2px;
}
/* チェック後のデザイン */
.checkbox3:checked + .checkmark::after {
content: '';
display: inline-block;
width: 220%;
height: 220%;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%23f09896" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>');
background-size: 100% auto;
background-repeat: no-repeat;
background-position: center;
position: absolute;
top: 30%;
left: 50%;
transform: translate(-50%, -50%);
}
HTML・CSS入門におすすめの1冊
リンク
もみじ
Web製作未経験でも読みやすい構成で、初学者でも安心して学習することができます。
実践的な内容を学ぶことができ解説も丁寧で分かりやすく、基礎的な内容はこの1冊で学ぶことができます。