87 lines
1.6 KiB
SCSS
87 lines
1.6 KiB
SCSS
$off-background-colour: #d3d3d3;
|
|
$on-background-colour: #2f7d32;
|
|
$switcher-width: 62px;
|
|
$switcher-height: 28px;
|
|
|
|
.switcher {
|
|
position: relative;
|
|
width: 18rem;
|
|
height: 28px;
|
|
margin: 0;
|
|
}
|
|
|
|
.switcher input {
|
|
position: absolute;
|
|
top: 0;
|
|
inset-inline-start: 0;
|
|
z-index: 2;
|
|
width: $switcher-width;
|
|
height: $switcher-height;
|
|
margin: 0;
|
|
cursor: pointer;
|
|
opacity: 0;
|
|
}
|
|
|
|
.switcher input:checked {
|
|
z-index: 1;
|
|
}
|
|
|
|
.switcher input:checked + label {
|
|
z-index: 0;
|
|
opacity: 1;
|
|
}
|
|
|
|
.switcher input:not(:checked) + label {
|
|
z-index: 3;
|
|
opacity: 0;
|
|
}
|
|
|
|
.switcher input:focus ~ .toggle-outside {
|
|
border-color: var(--focus);
|
|
box-shadow: 0 0 0 .2rem rgba(26, 70, 107, .25);
|
|
}
|
|
|
|
.switcher label {
|
|
position: absolute;
|
|
inset-inline-start: 0;
|
|
display: inline-block;
|
|
width: auto;
|
|
min-width: 6rem;
|
|
height: 100%;
|
|
margin-bottom: 0;
|
|
margin-inline-start: 70px;
|
|
line-height: $switcher-height;
|
|
text-align: start;
|
|
transition: opacity .25s ease;
|
|
}
|
|
|
|
.switcher .toggle-outside {
|
|
position: absolute;
|
|
inset-inline-start: 0;
|
|
box-sizing: border-box;
|
|
width: 58px;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
background: $off-background-colour;
|
|
border: 1px solid rgba(0, 0, 0, .18);
|
|
transition: .2s ease all;
|
|
transform: translate3d(0, 0, 0);
|
|
}
|
|
|
|
.switcher input ~ input:checked ~ .toggle-outside {
|
|
background: $on-background-colour;
|
|
}
|
|
|
|
.switcher .toggle-inside {
|
|
position: absolute;
|
|
left: 0;
|
|
width: ($switcher-width - 6) * .5;
|
|
height: $switcher-height;
|
|
background: #fff;
|
|
transition: .4s ease all;
|
|
}
|
|
|
|
.switcher input ~ input:checked ~ .toggle-outside .toggle-inside {
|
|
left: ($switcher-width * .5) - 1;
|
|
}
|