Repositorio del curso CCOM4030 el semestre B91 del proyecto Artesanías con el Instituto de Cultura

radio-button.css 6.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. :root {
  2. --radio-button-background-active: rgba(0, 0, 0, 0);
  3. --radio-button-indicator-color: var(--highlight-color);
  4. --radio-button-background: transparent;
  5. --radio-button-border: 3px solid var(--radio-button-indicator-color);
  6. --radio-button-size: 24px;
  7. --material-radio-button-size: 20px;
  8. --material-radio-button-shadow-size: calc((48px - var(--material-radio-button-size)) / 2);
  9. --radio-button: {
  10. @apply(--reset-box-model);
  11. position: relative;
  12. display: inline-block;
  13. vertical-align: top;
  14. @apply(--reset-cursor);
  15. @apply(--reset-font);
  16. @apply(--hide-input-parent);
  17. }
  18. --radio-button__label: {
  19. position: relative;
  20. display: inline-block;
  21. vertical-align: top;
  22. @apply(--reset-cursor);
  23. }
  24. --radio-button--before: {
  25. content: '';
  26. position: absolute;
  27. border-radius: 100%;
  28. @apply(--reset-box-model);
  29. }
  30. --radio-button--after: {
  31. content: '';
  32. position: absolute;
  33. border-radius: 100%;
  34. top: 50%;
  35. left: 50%;
  36. transform: translate(-50%, -50%);
  37. }
  38. --radio-button--disabled: {
  39. @apply(--disabled);
  40. }
  41. }
  42. /*~
  43. name: Radio Button
  44. category: Radio Button
  45. elements: ons-input
  46. markup: |
  47. <label class="radio-button">
  48. <input type="radio" class="radio-button__input" name="r" checked="checked">
  49. <div class="radio-button__checkmark"></div>
  50. Label
  51. </label>
  52. <label class="radio-button">
  53. <input type="radio" class="radio-button__input" name="r">
  54. <div class="radio-button__checkmark"></div>
  55. Label
  56. </label>
  57. <label class="radio-button">
  58. <input type="radio" class="radio-button__input" name="r">
  59. <div class="radio-button__checkmark"></div>
  60. Label
  61. </label>
  62. */
  63. .radio-button__input {
  64. @apply(--hide-input);
  65. }
  66. .radio-button__input:active,
  67. .radio-button__input:focus {
  68. outline: 0;
  69. -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  70. }
  71. .radio-button {
  72. @apply(--radio-button__label);
  73. @apply(--hide-input-parent);
  74. line-height: var(--radio-button-size);
  75. text-align: left;
  76. }
  77. .radio-button__checkmark:before {
  78. @apply(--radio-button--before);
  79. width: var(--checkbox-size);
  80. height: var(--checkbox-size);
  81. background: transparent;
  82. border: none;
  83. border-radius: var(--checkbox-size);
  84. left: 0;
  85. }
  86. .radio-button__checkmark {
  87. @apply(--radio-button);
  88. position: relative;
  89. width: var(--radio-button-size);
  90. height: var(--radio-button-size);
  91. background: var(--radio-button-background);
  92. pointer-events: none;
  93. }
  94. .radio-button__checkmark:after {
  95. @apply(--checkmark);
  96. }
  97. :checked + .radio-button__checkmark {
  98. background: var(--radio-button-background-active);
  99. }
  100. :checked + .radio-button__checkmark:after {
  101. opacity: 1;
  102. }
  103. :checked + .radio-button__checkmark:before {
  104. background: transparent;
  105. border: none;
  106. }
  107. :disabled + .radio-button__checkmark {
  108. @apply(--radio-button--disabled);
  109. }
  110. /*~
  111. name: Material Radio Button
  112. category: Radio Button
  113. elements: ons-input
  114. markup: |
  115. <label class="radio-button radio-button--material">
  116. <input type="radio" class="radio-button__input radio-button--material__input" name="r" checked="checked">
  117. <div class="radio-button__checkmark radio-button--material__checkmark"></div>
  118. Label
  119. </label>
  120. <label class="radio-button radio-button--material">
  121. <input type="radio" class="radio-button__input radio-button--material__input" name="r">
  122. <div class="radio-button__checkmark radio-button--material__checkmark"></div>
  123. Label
  124. </label>
  125. <label class="radio-button radio-button--material">
  126. <input type="radio" class="radio-button__input radio-button--material__input" name="s" disabled checked>
  127. <div class="radio-button__checkmark radio-button--material__checkmark"></div>
  128. Label
  129. </label>
  130. <label class="radio-button radio-button--material">
  131. <input type="radio" class="radio-button__input radio-button--material__input" name="s" disabled>
  132. <div class="radio-button__checkmark radio-button--material__checkmark"></div>
  133. Label
  134. </label>
  135. */
  136. .radio-button--material {
  137. line-height: calc(var(--material-radio-button-size) + 2px);
  138. @apply(--material-font);
  139. }
  140. .radio-button--material__input:before {
  141. content: '';
  142. position: absolute;
  143. top: 0;
  144. left: 0;
  145. opacity: 0;
  146. width: var(--material-radio-button-size);
  147. height: var(--material-radio-button-size);
  148. box-shadow: 0 0 0 var(--material-radio-button-shadow-size) var(--material-radio-button-inactive-color);
  149. border: none;
  150. box-sizing: border-box;
  151. border-radius: 50%;
  152. background-color: var(--material-radio-button-inactive-color);
  153. pointer-events: none;
  154. display: block;
  155. transform: scale3d(0.2, 0.2, 0.2);
  156. transition: opacity 0.25s ease-out, transform 0.1s ease-out;
  157. }
  158. .radio-button--material__input:checked:before {
  159. box-shadow: 0 0 0 var(--material-radio-button-shadow-size) var(--material-radio-button-active-color);
  160. background-color: var(--material-radio-button-active-color);
  161. }
  162. .radio-button--material__input:active:before {
  163. opacity: .15;
  164. transform: scale3d(1, 1, 1);
  165. }
  166. .radio-button--material__checkmark {
  167. width: var(--material-radio-button-size);
  168. height: var(--material-radio-button-size);
  169. overflow: visible;
  170. }
  171. .radio-button--material__checkmark:before {
  172. background: transparent;
  173. border: 2px solid var(--material-radio-button-inactive-color);
  174. box-sizing: border-box;
  175. border-radius: 50%;
  176. width: var(--material-radio-button-size);
  177. height: var(--material-radio-button-size);
  178. transition: border 0.2s ease;
  179. }
  180. .radio-button--material__checkmark:after {
  181. transition: background 0.2s ease, transform 0.2s ease;
  182. top: calc(var(--material-radio-button-size) / 4);
  183. left: calc(var(--material-radio-button-size) / 4);
  184. width: calc(var(--material-radio-button-size) / 2);
  185. height: calc(var(--material-radio-button-size) / 2);
  186. border: none;
  187. border-radius: 50%;
  188. transform: scale(0);
  189. }
  190. :checked + .radio-button--material__checkmark:before {
  191. background: transparent;
  192. border: 2px solid var(--material-radio-button-active-color);
  193. }
  194. .radio-button--material__input + .radio-button__checkmark:after {
  195. background: var(--material-radio-button-inactive-color);
  196. opacity: 1;
  197. transform: scale(0);
  198. }
  199. :checked + .radio-button--material__checkmark:after {
  200. opacity: 1;
  201. background: var(--material-radio-button-active-color);
  202. transform: scale(1);
  203. }
  204. :disabled + .radio-button--material__checkmark {
  205. opacity: 1;
  206. }
  207. :disabled + .radio-button--material__checkmark:after {
  208. background-color: var(--material-radio-button-disabled-color);
  209. border-color: var(--material-radio-button-disabled-color);
  210. }
  211. :disabled + .radio-button--material__checkmark:before {
  212. border-color: var(--material-radio-button-disabled-color);
  213. }