tdesign-mobile-vue
Version:
tdesign-mobile-vue
156 lines (130 loc) • 3.29 kB
text/less
@import "../../base.less";
@import "./_var.less";
@slider: ~"@{prefix}-slider";
.@{slider} {
position: relative;
height: @slider-handle-height + 6px;
&--with-marks {
margin-top: 24px;
}
&__bar {
position: absolute;
width: 100%;
top: 50%;
margin-top: calc(-@slider-bar-height / 2);
height: @slider-bar-height;
background-color: @slider-bar-bg-color;
transition: background-color .3s;
}
&__track {
position: absolute;
top: 50%;
margin-top: calc(-@slider-bar-height / 2);
height: @slider-bar-height;
background-color: @slider-track-bg-color;
transition: background-color .3s;
}
&__handle {
position: absolute;
top: 50%;
width: @slider-handle-width;
height: @slider-handle-height;
margin-top: calc(-@slider-handle-height / 2);
background-color: #fff;
border: solid 2px @brand-color;
border-radius: 50%;
transform: translateX(-50%);
transition: border-color .3s, transform .3s cubic-bezier(.18, .89, .32, 1.28);
z-index: 1;
box-sizing: border-box;
&.@{prefix}-is-drawing {
transform: scale(1.2);
}
}
&__mark {
position: absolute;
top: -@slider-handle-height - 4px;
left: 0;
width: 100%;
font-size: @slider-font-size-base;
height: @slider-handle-height + 4px;
&-text {
position: absolute;
display: inline-block;
text-align: center;
word-break: keep-all;
user-select: none;
color: @slider-mark-text-color;
transform: translateX(-50%);
&::after {
content: "";
position: absolute;
width: 2px;
height: 8px;
background-color: @slider-bar-bg-color;
left: 50%;
bottom: -21px;
margin-left: -1px;
}
&.@{prefix}-is-active::after {
background-color: @brand-color;
}
}
}
&-wrap {
display: flex;
align-items: center;
width: 100%;
.@{prefix}-slider {
flex: 1;
}
&__value {
min-width: @spacer-1;
margin-left: @slider-value-margin-left;
flex-shrink: 0;
color: @slider-value-color;
font-size: @slider-value-font-size;
&--left {
min-width: @spacer-1;
margin-left: 0;
margin-right: @spacer-2;
flex-shrink: 0;
color: @slider-value-color;
font-size: @slider-value-font-size;
}
}
&__title {
font-size: @slider-title-font-size;
color: @slider-title-color;
margin-right: @slider-title-margin-right;
}
&.@{prefix}-is {
&-mark {
padding-top: @slider-handle-height + 4px;
}
&-disabled {
cursor: not-allowed;
.@{slider}__handle {
border-color: @slider-disabled-color;
}
.@{slider}__track {
background-color: @slider-disabled-color;
}
.@{slider}__mark-text {
color: @slider-disabled-text-color;
&.@{prefix}-is-active:after {
background-color: @slider-disabled-color;
}
}
.@{slider}-wrap__value {
color: @slider-disabled-text-color;
}
}
}
}
}
.@{prefix}-is-mark-slider {
.@{prefix}-cell--label {
padding-top: @slider-handle-height + 4px;
}
}