327 lines
8.0 KiB
SCSS

@charset "UTF-8";
// range mixins
// --------------------------------------------------
@mixin range-bounding() {
width: 100%;
font-family: inherit;
font-weight: normal;
font-size: inherit;
line-height: inherit;
vertical-align: baseline;
display: flex;
flex-direction: column;
cursor: pointer;
.#{$css-prefix}range-inner {
position: relative;
}
.#{$css-prefix}range-inner:only-child {
margin-top: auto;
margin-bottom: auto;
}
.#{$css-prefix}range-track {
position: absolute;
width: 100%;
top: 50%;
border-radius: $range-size-m-track-radius;
}
.#{$css-prefix}range-selected {
position: absolute;
width: 0;
top: 50%;
left: 0;
border-radius: $range-size-m-track-radius;
}
.#{$css-prefix}range-scale {
position: relative;
width: 100%;
height: $range-size-m-scale-height;
.#{$css-prefix}range-scale-item {
position: absolute;
left: 0;
width: 2px;
border: $range-size-m-scale-item-border-width solid;
border-radius: $range-size-m-scale-radius;
&:last-child {
margin-left: -$range-size-m-scale-item-border-width * 2;
}
}
}
.#{$css-prefix}range-slider {
position: absolute;
top: 50%;
left: 0;
border-radius: 50%;
}
.#{$css-prefix}range-slider-inner {
position: absolute;
top: 50%;
left: 50%;
border-width: $range-size-slider-border-width;
border-style: $range-size-slider-border-style;
border-color: $range-normal-slider-border-color;
border-radius: 50%;
transition: transform $motion-duration-immediately $motion-linear, border-color $motion-duration-immediately $motion-linear;
}
.#{$css-prefix}range-slider.#{$css-prefix}range-slider-moving .#{$css-prefix}range-slider-inner {
border: $line-2 $line-solid $range-normal-selected-color;
box-shadow: $range-size-m-slider-shadow-moving;
transform: scale(1.2);
}
.#{$css-prefix}range-frag.#{$css-prefix}range-active {
.#{$css-prefix}range-slider .#{$css-prefix}range-slider-inner {
border: $line-2 $line-solid $range-normal-selected-color;
box-shadow: $range-size-m-slider-shadow-moving;
transform: scale(1.2);
}
}
.#{$css-prefix}range-mark {
position: relative;
cursor: auto;
.#{$css-prefix}range-mark-text {
position: absolute;
left: 0;
transform: translateX(-50%);
padding-left: 2px;
text-align: center;
}
}
.#{$css-prefix}range-frag {
position: absolute;
top: 0;
.#{$css-prefix}range-slider {
left: 0;
&:nth-child(2) {
left: 100%;
}
}
.#{$css-prefix}range-selected {
width: 100%;
}
}
&.disabled {
cursor: not-allowed;
.#{$css-prefix}range-mark {
cursor: auto;
}
}
}
@mixin range-state(
$unselectedColor,
$unselectedColorDisabled,
$unselectedColorHover,
$selectedColor,
$selectedColorDisabled,
$selectedColorHover,
$sliderBgColor,
$sliderBgColorDisabled,
$sliderBgColorHover,
$sliderBorderColor,
$sliderBorderColorDisabled,
$sliderBorderColorHover,
$markColor,
$markColorDisabled,
$markColorHover,
$markColorActivated,
$markColorActivatedDisabled,
$markColorActivatedHover
) {
.#{$css-prefix}range-track {
background-color: $unselectedColor;
&:hover {
background-color: $unselectedColorHover;
}
}
.#{$css-prefix}range-selected {
background-color: $selectedColor;
//transition: all .4s cubic-bezier(0.23, 1, 0.32, 1);
&:hover {
background-color: $selectedColorHover;
}
}
.#{$css-prefix}range-scale {
.#{$css-prefix}range-scale-item {
border-color: $unselectedColor;
background-color: $unselectedColor;
&:hover {
border-color: $unselectedColorHover;
}
&.activated {
border-color: $selectedColor;
background-color: $selectedColor;
&:hover {
border-color: $selectedColorHover;
}
}
}
}
.#{$css-prefix}range-slider-inner {
background-color: $sliderBgColor;
border-color: $sliderBorderColor;
&:hover {
background-color: $sliderBgColorHover;
box-shadow: $range-size-m-slider-shadow-hover;
transform: scale(1.2);
}
}
.#{$css-prefix}range-mark {
.#{$css-prefix}range-mark-text {
color: $markColor;
&:hover {
color: $markColorHover;
}
&.activated {
color: $markColorActivated;
&:hover {
color: $markColorActivatedHover;
}
}
}
}
&.disabled {
.#{$css-prefix}range-track {
background-color: $unselectedColorDisabled;
}
.#{$css-prefix}range-selected {
background-color: $selectedColorDisabled;
}
.#{$css-prefix}range-scale-item {
border-color: $unselectedColorDisabled;
&.activated {
border-color: $selectedColorDisabled;
}
}
.#{$css-prefix}range-slider-inner {
background-color: $sliderBgColorDisabled;
border-color: $sliderBorderColorDisabled;
transform: none;
box-shadow: none;
}
.#{$css-prefix}range-mark-text {
color: $markColorDisabled;
&.activated {
color: $markColorActivatedDisabled;
}
}
}
}
@mixin range-size(
$trackHeight,
$scaleHeight,
$sliderHW,
$sliderShadow,
$markFontsize,
$markFontweight,
$markLineheight
) {
.#{$css-prefix}range-track {
height: $trackHeight;
margin-top: -$trackHeight/2;
}
.#{$css-prefix}range-selected {
height: $trackHeight;
margin-top: -$trackHeight/2;
}
.#{$css-prefix}range-frag {
margin-top: -$trackHeight/2;
height: $sliderHW;
}
.#{$css-prefix}range-slider {
height: $sliderHW;
width: $sliderHW;
margin-top: -$sliderHW/2;
margin-left: -$sliderHW/2;
box-shadow: $sliderShadow;
}
.#{$css-prefix}range-slider-inner {
height: $sliderHW;
width: $sliderHW;
margin-top: -$sliderHW/2;
margin-left: -$sliderHW/2;
}
.#{$css-prefix}range-mark {
display: block;
.#{$css-prefix}range-mark-text {
font-size: $markFontsize;
font-weight: $markFontweight;
line-height: $markLineheight;
height: $markLineheight;
}
&.#{$css-prefix}range-mark-below {
height: $range-size-m-mark-top;
.#{$css-prefix}range-mark-text {
bottom: 0;
}
}
&.#{$css-prefix}range-mark-above {
height: $range-size-m-mark-top;
}
}
.#{$css-prefix}range-scale {
.#{$css-prefix}range-scale-item {
height: $scaleHeight;
}
}
}
@mixin range-hover (
$sliderBgColorHover,
$range-size-m-slider-shadow-hover
) {
&.simulation-hover > .#{$css-prefix}range-slider-inner {
background-color: $sliderBgColorHover;
box-shadow: $range-size-m-slider-shadow-hover;
transform: scale(1.2);
}
}
@mixin range-click (
$sliderBgColorHover,
$range-size-m-slider-shadow-hover
) {
&.simulation-click > .#{$css-prefix}range-slider-inner {
border: 2px solid $range-normal-selected-color;
box-shadow: $range-size-m-slider-shadow-moving;
transform: scale(1.2);
}
}