tdesign-mobile-vue
Version:
tdesign-mobile-vue
294 lines (249 loc) • 5.47 kB
text/less
@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;
}
}
}
}