CSS - Toggle
Toggle button
by jinam yu
HTML
<div class="app">
<ul class="component">
<li class="component__item">
<div class="css-toggle">
<input class="css-toggle__input" type="checkbox" />
<div class="css-toggle__effect"></div>
</div>
</li>
<li class="component__item">
<div class="css-toggle">
<input class="css-toggle__input" type="checkbox" checked />
<div class="css-toggle__effect"></div>
</div>
</li>
</ul>
</div>
SCSS
.app {
position: relative;
padding: 22px;
}
.component {
padding: 4px;
&__item {
padding: 4px;
}
}
.css-toggle {
position: relative;
display: inline-block;
&__input {
position: absolute;
left: 0;
top: 0;
z-index: 3;
width: 100%;
height: 100%;
opacity: 0;
cursor: pointer;
}
&__effect {
position: relative;
appearance: none;
outline: none;
width: 50px;
height: 30px;
background-color: #ffffff;
border-radius: 50px;
transition: all 200ms;
box-shadow: 0 0 0 1px #D9DADC;
&::after {
content: "";
position: absolute;
top: 1px;
left: 1px;
width: 28px;
height: 28px;
background-color: #f9f9f9;
border-radius: 50%;
transition: all 200ms;
}
}
&__input:checked + &__effect {
box-shadow: 0 0 0 1px #4ED164;
background-color: #4ED164;
&::after {
left: calc(100% - 28px);
}
}
}