ON・OFF入りのスイッチ風チェックボックスの作り方

@ハクト 2022-10-28 10:14:03に投稿

設定画面などで活用できるON/OFF切り替えスイッチ風チェックボックスの作り方を解説します。

①標準のチェックボックスを消し、背景を入れる

<div class="switch-checkbox">
  <input type="checkbox" checked id="sw-1">
  <label for="sw-1">スイッチ風..</label>
</div>

 

.switch-checkbox input[type=checkbox] {
    width: 65px; height: 30px;
    border-radius: 5px;
    background-color: #333;
    appearance: none; /* 標準チェックを非表示 */
    ...
}

「appearance: none;」で標準のチェックボックスを消し「background-color」で背景を黒にします。

②before疑似要素でスイッチ風に装飾

.switch-checkbox input[type=checkbox]::before {
    position: absolute;
    top: 50%; 
    left: 1.6rem;
    transform: translateY(-50%);
    width: 40px;
    background-color: #B75454;
    content: 'OFF';
}

before疑似要素で位置を調整し、幅40pxのOFFスイッチを作成します。

③チェック時に左に移動し「ON」状態にする

.switch-checkbox input[type=checkbox]:checked::before {
    background-color: #6CD892;
    left: 0.2rem;
    content: 'ON';
}

「:checked」擬似クラスを使用し「left」プロパティで左に寄せ、「background-color」と「content」を変更して「ON」スイッチを設定し完成。

 

全てのソース

コードを表示

<div class="switch-checkbox">
    <input type="checkbox" checked="" id="switch-check-1">
    <label for="switch-check-1">スイッチ風チェックボックス</label>
</div>
.switch-checkbox {
    margin-bottom: 1rem;
}

.switch-checkbox input[type=checkbox] {
    position: relative;
    cursor: pointer;
    width: 4.5rem;
    height: 1.9rem;
    margin-top: -0.2rem;
    border-radius: 5px;
    background-color: #333;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    vertical-align: middle;
    transition: .5s;
}

.switch-checkbox input[type=checkbox]::before {
    position: absolute;
    top: 50%;
    left: 1.6rem;
    transform: translateY(-50%);
    width: 2.6rem;
    padding: 0.2rem 0rem;
    background-color: #B75454;
    text-align: center;
    content: 'OFF';
    transition: .5s;
}

.switch-checkbox input[type=checkbox]:checked::before {
    background-color: #6CD892;
    left: .2rem;
    content: 'ON';
}

@ハクト

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

Twitter