Créer un interrupteur en CSS

Aujourd’hui, retour dans le monde des CSS.

Ce dont j’ai décidé de parler cette semaine est une manière de créer un interrupteur comme ci-dessous :



Le HTML

Concernant le HTML derrière cet interrupteur, c’est un input de type checkbox qui se cache dessous.

Cet input, caché en CSS, est englobé dans un label, avec un span à ses côtés. C’est le clic sur le label qui permettra de cocher/décocher la checkbox.

<label class="toggle">   
    <input class="toggle-checkbox" type="checkbox" />
    <span class="toggle-switch"></span>
</label>

Ce span servira à créer le fond de l’interrupteur, tandis que son pseudo-element ::before servira à créer l’élément mobile. Le style de ces deux éléments sera changé selon l’état de la checkbox, en utilisant la pseudo-classe :checked.

Le CSS

D’abord, on cache la checkbox :

.toggle-checkbox {
    display: none;
}

Ensuite on rajoute des arrondis au fond de l’interrupteur et à sa partie mobile :

.toggle-switch {
    display: inline-block;
    position: relative;
    width: 30px;
    height: 16px;
    background-color: #cacaca;
    border-radius: 8px;
}

.toggle-switch::before {
    content: "";
    background-color: #ffffff;
    position: absolute;
    height: 12px;
    width: 12px;
    border-radius: 50%;
    top: 2px;
    left: 4px;
}

Il ne reste plus qu’à créer les styles pour quand la case est cochée :

.toggle-checkbox:checked + .toggle-switch {
    background-color: #028ddd;
}

.toggle-checkbox:checked + .toggle-switch::before {
    left: 14px;
}

Et voilà ^^

Laisser un commentaire