UNPKG

@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
.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)) ); }