合同小程序前端代码仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 lines
4.7 KiB

  1. @import '~@/uni_modules/lime-style/index.scss';
  2. @import '~@/uni_modules/lime-style/functions.scss';
  3. $radio: #{$prefix}-radio;
  4. $icon: #{$radio}__icon;
  5. $radio-icon-size: create-var(radio-icon-size, 40rpx);
  6. $radio-font-size: create-var(radio-font-size, 32rpx);
  7. $radio-small-icon-size: create-var(radio-small-icon-size, 28rpx);
  8. $radio-small-font-size: create-var(radio-small-font-size, 30rpx);
  9. $radio-large-icon-size: create-var(radio-large-icon-size, 44rpx);
  10. $radio-large-font-size: create-var(radio-large-font-size, 36rpx);
  11. $radio-icon-border-width: create-var(radio-icon-border-width, 1rpx);
  12. // $radio-icon-border-color: var(--l-radio-border-color, $border-color);
  13. $radio-icon-border-radius: create-var(radio-icon-border-radius, 999rpx);
  14. $radio-icon-bg-color: create-var(radio-icon-bg-color, white);
  15. $radio-icon-border-color: create-var(radio-border-icon-color, $gray-5);
  16. $radio-icon-disabled-color: create-var(radio-icon-disabled-color, $gray-5);
  17. $radio-icon-disabled-bg-color: create-var(radio-icon-disabled-bg-color, $gray-1);
  18. $radio-icon-checked-color: create-var(radio-icon-checked-color, $primary-color);
  19. .#{$radio} {
  20. /* #ifndef UNI-APP-X */
  21. display: inline-flex;
  22. /* #endif */
  23. flex-direction: row;
  24. align-items: center;
  25. &__icon {
  26. position: relative;
  27. box-sizing: border-box;
  28. width: $radio-icon-size;
  29. height: $radio-icon-size;
  30. align-self: center;
  31. transition-property: all;
  32. transition-duration: 200ms;
  33. transition-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
  34. /* #ifndef APP-ANDROID || APP-IOS */
  35. &:after {
  36. box-sizing: border-box;
  37. position: absolute;
  38. top: 50%;
  39. left: 50%;
  40. transform: translate(-50%,-50%);
  41. opacity: 0;
  42. content: "";
  43. transition-property: all;
  44. transition-duration: 200ms;
  45. transition-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
  46. }
  47. /* #endif */
  48. &--dot,&--circle {
  49. background-color: $radio-icon-bg-color;
  50. border: $radio-icon-border-width solid $radio-icon-border-color;
  51. border-radius: $radio-icon-border-radius;
  52. }
  53. &--circle {
  54. /* #ifndef APP-ANDROID || APP-IOS */
  55. &:after {
  56. top: 48%;
  57. left: 24%;
  58. display: table;
  59. width: divide(100%, 20) * 7;
  60. height: divide(100%, 20) * 12;
  61. border: calc(#{$radio-icon-size} / 7) solid transparent;
  62. border-top: 0;
  63. border-inline-start: 0;
  64. transform: rotate(45deg) scale(0) translate(-50%,-50%);
  65. content: "";
  66. }
  67. /* #endif */
  68. }
  69. &--circle#{&}--checked {
  70. background-color: $radio-icon-checked-color;
  71. border-color: $radio-icon-checked-color;
  72. /* #ifndef APP-ANDROID || APP-IOS */
  73. &:after {
  74. opacity: 1;
  75. transform: rotate(45deg) scale(1) translate(-50%,-50%);
  76. border-color: white;
  77. }
  78. /* #endif */
  79. }
  80. &--dot {
  81. /* #ifndef APP-ANDROID || APP-IOS */
  82. &:after {
  83. background-color: white;
  84. border-radius: $radio-icon-border-radius;
  85. transform: scale(0) translate(-50%,-50%);
  86. }
  87. /* #endif */
  88. }
  89. &--dot#{&}--checked{
  90. background-color: $radio-icon-checked-color;
  91. /* #ifndef APP-ANDROID || APP-IOS */
  92. border-color: $radio-icon-checked-color;
  93. &:after{
  94. opacity: 1;
  95. width: 44%;
  96. height: 44%;
  97. transform: scale(1) translate(-50%,-50%);
  98. }
  99. /* #endif */
  100. }
  101. &--line {
  102. /* #ifndef APP-ANDROID || APP-IOS */
  103. &:after {
  104. top: 46%;
  105. left: 0%;
  106. inset-inline-start: 10%;
  107. display: table;
  108. width: divide(100%, 14) * 7;
  109. height: divide(100%, 14) * 12;
  110. border: calc(#{$radio-icon-size} / 7) solid transparent;
  111. border-top: 0;
  112. border-inline-start: 0;
  113. transform: rotate(45deg) scale(0) translate(-50%,-50%);
  114. content: "";
  115. transition-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
  116. }
  117. /* #endif */
  118. }
  119. &--line#{&}--checked{
  120. /* #ifndef APP-ANDROID || APP-IOS */
  121. &:after{
  122. opacity: 1;
  123. transform: rotate(45deg) scale(1) translate(-50%,-50%);
  124. border-color: $radio-icon-checked-color;
  125. }
  126. /* #endif */
  127. }
  128. &--circle#{&}--disabled, &--dot#{&}--disabled {
  129. border-color: $radio-icon-disabled-color;
  130. background-color: $radio-icon-disabled-bg-color;
  131. }
  132. &--circle#{&}--disabled#{&}--checked, &--dot#{&}--disabled#{&}--checked {
  133. /* #ifndef APP-ANDROID || APP-IOS */
  134. &:after {
  135. border-color: $radio-icon-disabled-color;
  136. }
  137. /* #endif */
  138. }
  139. &--dot#{&}--disabled#{&}--checked {
  140. /* #ifndef APP-ANDROID || APP-IOS */
  141. &:after {
  142. background-color: $radio-icon-disabled-color;
  143. }
  144. /* #endif */
  145. }
  146. &--line#{&}--disabled#{&}--checked {
  147. /* #ifndef APP-ANDROID || APP-IOS */
  148. &:after {
  149. border-color: $radio-icon-disabled-color;
  150. }
  151. /* #endif */
  152. }
  153. }
  154. &__label {
  155. padding-left: $spacer-xs;
  156. // padding-right: $spacer-xs;
  157. font-size: $radio-font-size;
  158. color: $text-color-1;
  159. &--disabled {
  160. color: $radio-icon-disabled-color;
  161. }
  162. }
  163. }