checked.scss 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. // 单选框和复选框
  2. %RadioAndCheckboxSpan {
  3. position: relative;
  4. user-select: none;
  5. cursor: pointer;
  6. }
  7. %RadioAndCheckboxIcon {
  8. display: none;
  9. position: absolute;
  10. height: 1em;
  11. width: 1em;
  12. }
  13. %XERadio {
  14. @extend %RadioAndCheckboxSpan;
  15. .vxe-radio--icon {
  16. @extend %RadioAndCheckboxIcon;
  17. font-size: $vxe-radio-font-size-default;
  18. &:before {
  19. content: "";
  20. position: absolute;
  21. height: 1em;
  22. width: 1em;
  23. top: 0;
  24. left: 0;
  25. border: $vxe-radio-border-width solid $vxe-input-border-color;
  26. background-color: $vxe-radio-icon-background-color;
  27. border-radius: 50%;
  28. }
  29. }
  30. .vxe-radio--unchecked-icon {
  31. display: inline-block;
  32. }
  33. .vxe-radio--checked-icon {
  34. &:after {
  35. content: "";
  36. position: absolute;
  37. height: 0.25em;
  38. width: 0.25em;
  39. top: 0.4em;
  40. left: 0.4em;
  41. border-radius: 50%;
  42. background-color: $vxe-radio-checked-icon-background-color;
  43. }
  44. }
  45. &.is--checked {
  46. color: $vxe-primary-color;
  47. .vxe-radio--unchecked-icon {
  48. display: none;
  49. }
  50. .vxe-radio--checked-icon {
  51. display: inline-block;
  52. &:before {
  53. border-color: $vxe-primary-color;
  54. background-color: $vxe-primary-color;
  55. }
  56. }
  57. }
  58. &:not(.is--disabled) {
  59. &:hover {
  60. .vxe-radio--icon {
  61. &:before {
  62. border-color: $vxe-primary-color;
  63. }
  64. }
  65. }
  66. }
  67. &.is--disabled {
  68. cursor: not-allowed;
  69. color: $vxe-disabled-color;
  70. .vxe-radio--icon {
  71. &:before {
  72. border-color: $vxe-input-disabled-color;
  73. background-color: $vxe-input-disabled-background-color;
  74. }
  75. &:after {
  76. background-color: $vxe-primary-disabled-color;
  77. }
  78. }
  79. }
  80. }
  81. %XECheckbox {
  82. @extend %RadioAndCheckboxSpan;
  83. .vxe-checkbox--icon {
  84. @extend %RadioAndCheckboxIcon;
  85. font-size: $vxe-checkbox-font-size-default;
  86. &:before {
  87. content: "";
  88. position: absolute;
  89. height: 1em;
  90. width: 1em;
  91. top: 0;
  92. left: 0;
  93. background-color: $vxe-checkbox-icon-background-color;
  94. border-radius: $vxe-checkbox-border-radius;
  95. border: $vxe-checkbox-border-width solid $vxe-input-border-color;
  96. }
  97. }
  98. .vxe-checkbox--unchecked-icon {
  99. display: inline-block;
  100. }
  101. .vxe-checkbox--checked-icon {
  102. &:after {
  103. content: "";
  104. position: absolute;
  105. height: $vxe-checkbox-checked-height;
  106. width: $vxe-checkbox-checked-width;
  107. top: 50%;
  108. left: 50%;
  109. border: $vxe-checkbox-border-width solid $vxe-checkbox-checked-icon-border-color;
  110. border-left: 0;
  111. border-top: 0;
  112. transform: translate(-50%, -50%) rotate(45deg);
  113. }
  114. }
  115. .vxe-checkbox--indeterminate-icon {
  116. &:after {
  117. content: "";
  118. position: absolute;
  119. top: 50%;
  120. left: 50%;
  121. height: $vxe-checkbox-indeterminate-height;
  122. width: $vxe-checkbox-indeterminate-width;
  123. background-color: $vxe-checkbox-indeterminate-icon-background-color;
  124. transform: translate(-50%, -50%);
  125. }
  126. }
  127. &.is--checked,
  128. &.is--indeterminate {
  129. color: $vxe-primary-color;
  130. .vxe-checkbox--unchecked-icon {
  131. display: none;
  132. }
  133. .vxe-checkbox--icon {
  134. &:before {
  135. border-color: $vxe-primary-color;
  136. background-color: $vxe-primary-color;
  137. }
  138. }
  139. }
  140. &.is--checked {
  141. .vxe-checkbox--checked-icon {
  142. display: inline-block;
  143. }
  144. }
  145. &.is--indeterminate {
  146. .vxe-checkbox--indeterminate-icon {
  147. display: inline-block;
  148. }
  149. }
  150. &:not(.is--disabled) {
  151. &:hover {
  152. .vxe-checkbox--icon {
  153. &:before {
  154. border-color: $vxe-primary-color;
  155. }
  156. }
  157. }
  158. }
  159. &.is--disabled {
  160. cursor: not-allowed;
  161. color: $vxe-disabled-color;
  162. .vxe-checkbox--icon {
  163. &:before {
  164. border-color: $vxe-input-disabled-color;
  165. background-color: $vxe-input-disabled-background-color;
  166. }
  167. &:after {
  168. border-color: $vxe-primary-disabled-color;
  169. }
  170. }
  171. }
  172. }