UNPKG

zarm

Version:

基于 React 的移动端UI库

138 lines (127 loc) 3.96 kB
.za-slider { --line-size: var(--za-slider-line-size, 4px); --line-border-radius: var(--za-slider-line-border-radius, 2px); --line-background: var(--za-slider-line-background, rgba(120, 120, 128, 0.2)); --line-active-background: var(--za-slider-line-active-background, var(--za-theme-primary)); --dot-size: var(--za-slider-dot-size, 10px); --dot-background: var(--za-slider-dot-background, var(--za-background-color)); --dot-border-color: var(--za-slider-dot-border-color, rgba(120, 120, 128, 0.2)); --dot-border-width: var(--za-slider-dot-border-width, 2px); --dot-active-border-color: var(--za-slider-dot-active-border-color, var(--za-theme-primary)); --knob-size: var(--za-slider-knob-size, 28px); --knob-size-small: var(--za-slider-knob-size-small, 20px); --knob-background: var(--za-slider-knob-background, #fff); --knob-box-shadow: var(--za-slider-knob-box-shadow, 0 1px 3px rgba(0, 0, 0, 0.4)); --mark-font-size: var(--za-slider-mark-font-size, 15px); --mark-text-color: var(--za-slider-mark-text-color, var(--za-theme-primary)); --mark-spacing: var(--za-slider-mark-spacing, 15px); --disabled-opacity: var(--za-slider-disabled-opacity, var(--za-opacity-disabled)); display: flex; align-items: center; width: 100%; } .za-slider__content { flex: 1; position: relative; margin: calc(var(--knob-size) / 2) calc(var(--knob-size) / 2); } .za-slider__line { flex: 1; position: relative; height: var(--line-size); background: var(--line-background); border-radius: var(--line-border-radius); cursor: pointer; } .za-slider__line .za-slider__line__bg { height: 100%; background: var(--line-active-background); border-radius: var(--line-border-radius); } .za-slider__dot { position: absolute; width: var(--dot-size); height: var(--dot-size); margin-top: calc((var(--dot-size) + var(--line-size)) / -2); margin-left: calc(var(--dot-size) / -2); background: var(--dot-background); border: var(--dot-border-width) solid var(--dot-border-color); border-radius: 50%; cursor: pointer; } .za-slider__dot--active { border-color: var(--dot-active-border-color); } .za-slider__knob { position: absolute; left: 0; margin-top: calc((var(--knob-size) + var(--line-size)) / -2); margin-left: calc(var(--knob-size) / -2); width: var(--knob-size); height: var(--knob-size); border-radius: 50%; background: var(--knob-background); box-shadow: var(--knob-box-shadow); touch-action: none; cursor: pointer; } .za-slider__knob .za-tooltip { display: block; } .za-slider__knob .za-slider__knob__shadow { width: var(--knob-size); height: var(--knob-size); } .za-slider__marks { position: absolute; top: var(--mark-spacing); left: 0; right: 0; } .za-slider__marks .za-slider__mark { position: absolute; transform: translateX(-50%); font-size: var(--mark-font-size); color: var(--mark-text-color); } .za-slider--marked { --knob-size: var(--za-slider-knob-size, var(--knob-size-small)); } .za-slider--disabled { cursor: not-allowed; opacity: var(--disabled-opacity); } .za-slider--vertical { flex-direction: column-reverse; width: auto; height: 100%; align-items: initial; } .za-slider--vertical .za-slider__line { width: var(--line-size); position: absolute; top: 0; height: 100%; } .za-slider--vertical .za-slider__line .za-slider__line__bg { position: absolute; bottom: 0; width: var(--line-size); } .za-slider--vertical .za-slider__dot { margin-bottom: calc(var(--dot-size) / -2); margin-left: calc((var(--dot-size) - var(--line-size)) / -2); } .za-slider--vertical .za-slider__knob { margin-top: 0; margin-bottom: calc(var(--knob-size) / -2); margin-left: calc((var(--knob-size) - var(--line-size)) / -2); } .za-slider--vertical.za-slider--marked .za-slider__marks { top: 0; left: var(--mark-spacing); height: 100%; } .za-slider--vertical.za-slider--marked .za-slider__mark { transform: translateY(50%); }