slider.scss 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. @use "sass:map";
  2. @use "sass:list";
  3. @use '../helpers/baseMixin.scss';
  4. $sliderThemeList: (
  5. (
  6. name: "primary",
  7. textColor: var(--vxe-ui-font-primary-color),
  8. hoverColor: var(--vxe-ui-font-primary-lighten-color),
  9. activeColor: var(--vxe-ui-font-primary-darken-color),
  10. disabledColor: var(--vxe-ui-font-primary-disabled-color)
  11. ),
  12. (
  13. name: "success",
  14. textColor: var(--vxe-ui-status-success-color),
  15. hoverColor: var(--vxe-ui-status-success-lighten-color),
  16. activeColor: var(--vxe-ui-status-success-darken-color),
  17. disabledColor: var(--vxe-ui-status-success-disabled-color)
  18. ),
  19. (
  20. name: "info",
  21. textColor: var(--vxe-ui-status-info-color),
  22. hoverColor: var(--vxe-ui-status-info-lighten-color),
  23. activeColor: var(--vxe-ui-status-info-darken-color),
  24. disabledColor: var(--vxe-ui-status-info-disabled-color)
  25. ),
  26. (
  27. name: "warning",
  28. textColor: var(--vxe-ui-status-warning-color),
  29. hoverColor: var(--vxe-ui-status-warning-lighten-color),
  30. activeColor: var(--vxe-ui-status-warning-darken-color),
  31. disabledColor: var(--vxe-ui-status-warning-disabled-color)
  32. ),
  33. (
  34. name: "danger",
  35. textColor: var(--vxe-ui-status-danger-color),
  36. hoverColor: var(--vxe-ui-status-danger-lighten-color),
  37. activeColor: var(--vxe-ui-status-danger-darken-color),
  38. disabledColor: var(--vxe-ui-status-danger-disabled-color)
  39. ),
  40. (
  41. name: "error",
  42. textColor: var(--vxe-ui-status-error-color),
  43. hoverColor: var(--vxe-ui-status-error-lighten-color),
  44. activeColor: var(--vxe-ui-status-error-darken-color),
  45. disabledColor: var(--vxe-ui-status-error-disabled-color)
  46. )
  47. );
  48. .vxe-slider {
  49. position: relative;
  50. display: block;
  51. padding: 0.5em 1em;
  52. @for $index from 0 to list.length($sliderThemeList) {
  53. $item: list.nth($sliderThemeList, $index + 1);
  54. &.theme--#{map.get($item, name)} {
  55. .vxe-slider--bar-track {
  56. background-color: map.get($item, textColor);
  57. &:hover {
  58. background-color: map.get($item, hoverColor);
  59. }
  60. &:hover {
  61. background-color: map.get($item, activeColor);
  62. }
  63. }
  64. .vxe-slider--bar-btn {
  65. background-color: map.get($item, textColor);
  66. }
  67. }
  68. }
  69. &.is--disabled {
  70. .vxe-slider--bar-btn {
  71. cursor: not-allowed;
  72. }
  73. }
  74. &:not(.is--disabled) {
  75. .vxe-slider--bar-wrapper,
  76. .vxe-slider--inner {
  77. cursor: pointer;
  78. }
  79. .vxe-slider--bar-btn {
  80. &:hover {
  81. transform: scale(1.2);
  82. }
  83. &:active {
  84. transform: scale(1.1);
  85. }
  86. }
  87. }
  88. &.is--readonly {
  89. .vxe-slider--bar-wrapper,
  90. .vxe-slider--inner {
  91. cursor: default;
  92. }
  93. }
  94. }
  95. .vxe-slider--inner {
  96. position: relative;
  97. }
  98. .vxe-slider--bar-wrapper {
  99. background-color: #e4e7ed;
  100. }
  101. .vxe-slider--bar-track {
  102. position: absolute;
  103. left: 0;
  104. top: 0;
  105. z-index: 1;
  106. background-color: var(--vxe-ui-font-primary-color);
  107. &:hover {
  108. background-color: var(--vxe-ui-font-primary-lighten-color);
  109. }
  110. &:active {
  111. background-color: var(--vxe-ui-font-primary-darken-color);
  112. }
  113. }
  114. .vxe-slider--bar-wrapper,
  115. .vxe-slider--bar-track {
  116. height: 0.3em;
  117. border-radius: var(--vxe-ui-base-border-radius);
  118. }
  119. .vxe-slider--bar-btn {
  120. position: absolute;
  121. width: 0.9em;
  122. height: 0.9em;
  123. top: -0.3em;
  124. border-radius: 50%;
  125. border: 0.15em solid var(--vxe-ui-font-primary-color);
  126. background-color: #fff;
  127. cursor: pointer;
  128. z-index: 1;
  129. @include baseMixin.createAnimationTransition(transform, 0.1s);
  130. }
  131. .vxe-slider--start-btn {
  132. left: -0.45em;
  133. }
  134. .vxe-slider--end-btn {
  135. right: -0.45em;
  136. }