rate.scss 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. @use 'sass:map';
  2. @use 'mixins/mixins' as *;
  3. @use 'mixins/var' as *;
  4. @use 'common/var' as *;
  5. $rate-height: () !default;
  6. $rate-height: map.merge(
  7. (
  8. 'large': 40px,
  9. 'default': 32px,
  10. 'small': 24px,
  11. ),
  12. $rate-height
  13. );
  14. $rate-size: () !default;
  15. $rate-size: map.merge(
  16. (
  17. 'small': 14px,
  18. ),
  19. $rate-size
  20. );
  21. @include b(rate) {
  22. @include set-component-css-var('rate', $rate);
  23. }
  24. @include b(rate) {
  25. display: inline-flex;
  26. align-items: center;
  27. height: map.get($rate-height, 'default');
  28. &:focus,
  29. &:active {
  30. outline: none;
  31. }
  32. &:focus-visible {
  33. @include e(item) {
  34. & .#{bem('rate', 'icon')} {
  35. @include when(focus-visible) {
  36. outline: 2px solid getCssVar('rate', 'outline-color');
  37. transition:
  38. outline-offset 0s,
  39. outline 0s;
  40. }
  41. }
  42. }
  43. }
  44. @include e(item) {
  45. cursor: pointer;
  46. display: inline-block;
  47. position: relative;
  48. font-size: 0;
  49. vertical-align: middle;
  50. color: getCssVar('rate-void-color');
  51. line-height: normal;
  52. }
  53. & .#{bem('rate', 'icon')} {
  54. position: relative;
  55. display: inline-block;
  56. font-size: getCssVar('rate-icon-size');
  57. margin-right: getCssVar('rate-icon-margin');
  58. transition: getCssVar('transition-duration');
  59. &.hover {
  60. transform: scale(1.15);
  61. }
  62. .path2 {
  63. position: absolute;
  64. left: 0;
  65. top: 0;
  66. }
  67. @include when(active) {
  68. color: getCssVar('rate', 'fill-color');
  69. }
  70. }
  71. @include e(decimal) {
  72. position: absolute;
  73. top: 0;
  74. left: 0;
  75. display: inline-block;
  76. overflow: hidden;
  77. color: getCssVar('rate', 'fill-color');
  78. @include m('box') {
  79. position: absolute;
  80. top: 0;
  81. left: 0;
  82. }
  83. }
  84. @include e(text) {
  85. font-size: getCssVar('rate-font-size');
  86. vertical-align: middle;
  87. color: getCssVar('rate', 'text-color');
  88. }
  89. @each $size in (large, small) {
  90. @include m($size) {
  91. height: map.get($rate-height, $size);
  92. & .#{bem('rate', 'icon')} {
  93. font-size: map.get($rate-size, $size);
  94. }
  95. }
  96. }
  97. @include when(disabled) {
  98. @include e(item) {
  99. cursor: not-allowed;
  100. color: getCssVar('rate', 'disabled-void-color');
  101. }
  102. }
  103. }