UNPKG

zarm

Version:

基于 React 的移动端UI库

56 lines (55 loc) 2.07 kB
.za-switch { --width: var(--za-switch-width, 52px); --height: var(--za-switch-height, 32px); --background: var(--za-switch-background, rgba(120, 120, 128, 0.16)); --border-radius: var(--za-switch-border-radius, var(--za-radius-round)); --transition: var(--za-switch-transition, all 0.3s); --checked-background: var(--za-switch-checked-background, var(--za-theme-primary)); --knob-background: var(--za-switch-knob-background, #fff); --knob-size: var(--za-switch-knob-size, 28px); --knob-box-shadow: var(--za-switch-knob-box-shadow, 0 3px 1px rgba(0, 0, 0, 0.06), 0 3px 8px rgba(0, 0, 0, 0.15)); --knob-border-color: var(--za-switch-knob-border-color, rgba(0, 0, 0, 0.04)); --knob-border-width: var(--za-switch-knob-border-width, 0.5px); --knob-transition: var(--za-switch-knob-transition, transform 0.3s cubic-bezier(0.45, 1, 0.4, 1), transform 0.3s cubic-bezier(0.4, 0.4, 0.25, 1.35)); } .za-switch__input { position: relative; width: var(--width); height: var(--height); border: calc((var(--height) - var(--knob-size)) / 2) solid transparent; border-radius: var(--border-radius); background: var(--background); vertical-align: middle; transition: var(--transition); outline: 0; -webkit-appearance: none; } .za-switch__input:before, .za-switch__input:after { content: ""; position: absolute; top: 0; left: 0; height: var(--knob-size); border-radius: var(--border-radius); } .za-switch__input:before { width: calc(var(--width) - var(--height) + var(--knob-size)); transition: var(--knob-transition); } .za-switch__input:after { width: var(--knob-size); background: var(--knob-background); border: var(--knob-border-width) solid var(--knob-border-color); box-shadow: var(--knob-box-shadow); transition: var(--knob-transition); } .za-switch__input:checked { background: var(--checked-background); } .za-switch__input:checked:after { transform: translateX(calc(var(--width) - var(--height))); } .za-switch--disabled .za-switch__input { cursor: not-allowed; opacity: var(--za-opacity-disabled); }