CSSでチェックボックスの枠に背景色を入れる方法

@ハクト 2023-06-14 10:32:39に投稿

CSSを使用して背景色付きのカスタムチェックボックスを作成する方法をご紹介します。

デフォルトのチェックボックスをカスタマイズしたい場合、以下の方法で独自のスタイルをあてることができます。

標準のチェックボックスを消す

「appearance: none;」でデフォルトのチェックボックスを無効にします。

<div class="bg-checkbox">
    <input type="checkbox" checked="" id="bg-check-1">
    <label for="bg-check-1">背景色入り..</label>
</div>

 

.bg-checkbox input[type=checkbox] {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}

チェックボックスの枠をつくる

「width」「height」でチェックボックスのサイズを指定。「margin-top」で位置を調整し、「border-radius」で丸枠にします。

.bg-checkbox input[type=checkbox] {
    position: relative;
    cursor: pointer;
    width: 18px;
    height: 18px;
    margin-top: -1px;
    border-radius: 3px;
    background-color: #ddd;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    vertical-align: middle;
    transition: .3s;
}

 

チェック時に背景を入れる

「:checked」で背景を指定し、「:checked::before」でfontawesomeのチェックマークアイコンを指定してます。

.bg-checkbox input[type=checkbox]:checked {
    background: #439fc6;
}

.bg-checkbox input[type=checkbox]:checked::before {
    position: absolute;
    padding: 4px;
    color: white;
    font-family: "Font Awesome 5 Free";
    font-weight: 900;
    font-size: 10px;
    content: '\f00c';
}

 

全てのソース

コードを表示

.bg-checkbox {
    margin-bottom: 1rem;
}

.bg-checkbox input[type=checkbox] {
    position: relative;
    cursor: pointer;
    width: 18px;
    height: 18px;
    margin-top: -1px;
    border-radius: 3px;
    background-color: #ddd;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    vertical-align: middle;
    transition: .3s;
}

.bg-checkbox input[type=checkbox]:checked {
    background: #439fc6;
}

.bg-checkbox input[type=checkbox]:checked::before {
    position: absolute;
    padding: 4px;
    color: white;
    font-family: "Font Awesome 5 Free";
    font-weight: 900;
    font-size: 10px;
    content: '\f00c';
}

@ハクト

サービス作り・デザイン好き。70年代生まれのWEBエンジニア。WEBパーツをCSSでカスタマイズしてコピペできるサービスを運営中「Pa-tu」。実装したWEBパーツやツールを利用してWEB情報やライフハックを発信してます。

Twitter