UNPKG

tdesign-mobile-vue

Version:
294 lines (249 loc) 5.47 kB
@import "../../../base.less"; @import "./_var.less"; .@{slider} { font-size: 14px; display: flex; align-items: center; &--disabled { .@{slider}__value, .@{slider}__range-extreme, .@{slider}__dot-value, .@{slider}__scale-desc { color: @slider-disabled-text-color; } } &--top { padding-top: 20px; } &__line { position: absolute; top: 0; height: @slider-bar-height; border-radius: calc(@slider-bar-height / 2); background-color: @slider-active-color; &--disabled { background-color: @slider-active-disabled-color; } &--capsule { height: @slider-capsule-line-height; } &--capsule&--single { border-top-left-radius: calc(@slider-capsule-line-height / 2); border-bottom-left-radius: calc(@slider-capsule-line-height / 2); } } &__dot { border-radius: 50%; border: 1px solid @slider-dot-color; position: absolute; top: 50%; right: 0; transform: translate3d(50%, -50%, 0); z-index: 2; background-color: @slider-dot-bg-color; width: @slider-dot-size; height: @slider-dot-size; box-shadow: @shadow-1; box-sizing: border-box; &--left { left: 0; transform: translate3d(-50%, -50%, 0); } &-value { position: relative; left: 50%; transform: translateX(-50%); top: -26px; text-align: center; width: 48px; height: 22px; line-height: 22px; } } &__value, &__range-extreme, &__dot-value { color: @slider-scale-desc-color; &--sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; clip-path: inset(50%); border: 0; } } &__dot-slider { width: 100%; height: 100%; position: absolute; left: 0; top: 0; } &__value--min { margin-left: 16px; } &__value--max { margin-right: 16px; } &__value--right { flex-basis: 40px; &__value--text { margin-right: 16px; text-align: right; display: block; } } &__bar { margin: 8px 16px; flex: 10; background-clip: content-box; height: @slider-bar-height; border-radius: calc(@slider-bar-height / 2); position: relative; background-color: @slider-default-color; &--capsule { height: @slider-capsule-bar-height; border-radius: calc(@slider-capsule-bar-height / 2); background-color: @slider-capsule-bar-color; border: 3px solid @slider-capsule-bar-color; box-sizing: border-box; } &--marks { background-color: @slider-default-color; } &--disabled { background-color: @slider-default-disabled-color; } } &__range-extreme--min { margin-left: 16px; text-align: left; } &__range-extreme--max { margin-right: 16px; text-align: right; } // 刻度样式 &__scale { &-item { background-color: @slider-default-color; height: 8px; width: 8px; border-radius: 50%; position: absolute; top: 50%; margin-top: -4px; z-index: 1; &--active { background-color: @slider-active-color; } &--disabled { background-color: @slider-default-disabled-color; } &--active&--disabled { background-color: @slider-active-disabled-color; } &--capsule { height: @slider-capsule-line-height; width: 2px; border-radius: 0; background-color: @slider-capsule-bar-color; margin-top: calc(-.5 * @slider-capsule-line-height); } &--hidden { background-color: transparent; } } &-desc { position: absolute; left: 50%; color: @slider-scale-desc-color; transform: translateX(-50%); bottom: 16px; &--capsule { bottom: 23px; } } } } .@{slider}--vertical { --td-slider-bar-height: 200px; height: @slider-bar-height; justify-content: center; position: relative; .@{slider}__bar { flex: none; height: 100%; width: @slider-bar-width; &--capsule { width: @slider-capsule-bar-width; border-radius: calc(@slider-capsule-bar-width / 2); } } .@{slider}__line { width: 100%; height: unset; left: 0; border-radius: calc(@slider-bar-width / 2); &--capsule { border-radius: calc(@slider-capsule-line-height / 2); } } .@{slider}__dot { left: 50%; top: 100%; transform: translate(-50%, -50%); &--left { top: 0; transform: translate(-50%, -50%); left: 50%; } &--right { left: 50%; transform: translate(-50%, -50%); top: 100%; } &-value { left: 27px; top: 50%; transform: translate(0, -50%); width: auto; } } .@{slider}__range-extreme { position: absolute; left: 50%; transform: translateX(-50%); margin: 0; &--min { top: 0; } &--max { bottom: 0; transform: translate(-50%, 100%); } } .@{slider}__scale { &-item { left: 50%; margin-top: 0; &--capsule { height: 2px; width: @slider-capsule-line-height; } } &-desc { top: 50%; transform: translateY(-50%); bottom: unset; left: 19px; &--capsule { left: 26px; } } } }