for
attribute to associate the <label>
with the checkbox <input>
element.:after
pseudo-element of the <label>
to create a circular knob for the switch.:checked
pseudo-class selector to change the position of the knob, using transform: translateX(20px)
and the background-color
of the switch.position: absolute
and left: -9999px
to visually hide the <input>
element.<input type="checkbox" id="toggle" class="offscreen" /> <label for="toggle" class="switch"></label>
.switch {
position: relative;
display: inline-block;
width: 40px;
height: 20px;
background-color: rgba(0, 0, 0, 0.25);
border-radius: 20px;
transition: all 0.3s;
}
.switch:after {
content: '';
position: absolute;
width: 18px;
height: 18px;
border-radius: 18px;
background-color: white;
top: 1px;
left: 1px;
transition: all 0.3s;
}
input[type='checkbox']:checked + .switch:after {
transform: translateX(20px);
}
input[type='checkbox']:checked + .switch {
background-color: #7983ff;
}
.offscreen {
position: absolute;
left: -9999px;
}
Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️