@cn-ui/core
Version:
The @cn-ui/core is a collection of UI components and utilities for building modern web applications with SolidJS.
46 lines (40 loc) • 1.4 kB
CSS
.cn-switch {
--button-width: 3rem;
--button-height: 1.5rem;
--toggle-diameter: 1rem;
--button-toggle-offset: calc((var(--button-height) - var(--toggle-diameter)) / 2);
--toggle-shadow-offset: 10px;
--toggle-wider: 3rem;
}
.cn-switch .slider::after {
content: "";
display: inline-block;
width: var(--toggle-diameter);
height: var(--toggle-diameter);
background-color: #fff;
border-radius: calc(var(--toggle-diameter) / 2);
position: absolute;
top: var(--button-toggle-offset);
transform: translateX(var(--button-toggle-offset));
box-shadow: var(--toggle-shadow-offset) 0 calc(var(--toggle-shadow-offset) * 4)
rgba(0, 0, 0, 0.1);
transition: 0.3s all ease-in-out;
}
.cn-switch input[type="checkbox"]:checked + .slider::after {
transform: translateX(
calc(var(--button-width) - var(--toggle-diameter) - var(--button-toggle-offset))
);
box-shadow: calc(var(--toggle-shadow-offset) * -1) 0 calc(var(--toggle-shadow-offset) * 4)
rgba(0, 0, 0, 0.1);
}
.cn-switch input[type="checkbox"] {
display: none;
}
.cn-switch input[type="checkbox"]:active + .slider::after {
width: var(--toggle-wider);
}
.cn-switch input[type="checkbox"]:checked:active + .slider::after {
transform: translateX(
calc(var(--button-width) - var(--toggle-wider) - var(--button-toggle-offset))
);
}