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

checkbox.css 8.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. :root {
  2. --checkbox-size: 22px;
  3. --checkbox-border: 1px solid #c7c7cd;
  4. --checkbox-checked-background-color: var(--highlight-color); /* background color active */
  5. --background-color--before--checkbox: var(--checkbox-checked-background-color);
  6. --checkmark-border: 2px solid #fff;
  7. --material-checkbox-size: 18px;
  8. --material-checkbox-focus-ring-size: 40px;
  9. --material-checkbox-focus-ring-shadow-size: calc((var(--material-checkbox-focus-ring-size) - var(--material-checkbox-size)) / 2);
  10. --checkbox: {
  11. @apply(--reset-box-model);
  12. position: relative;
  13. display: inline-block;
  14. vertical-align: top;
  15. @apply(--reset-cursor);
  16. @apply(--reset-font);
  17. @apply(--hide-input-parent);
  18. }
  19. --checkbox__label: {
  20. position: relative;
  21. display: inline-block;
  22. vertical-align: top;
  23. @apply(--reset-cursor);
  24. @apply(--reset-font);
  25. }
  26. --checkbox--disabled: {
  27. @apply(--disabled);
  28. }
  29. --checkbox--before: {
  30. content: '';
  31. position: absolute;
  32. }
  33. --checkbox--after: {
  34. @apply(--checkbox--before);
  35. }
  36. }
  37. /*~
  38. name: Checkbox
  39. category: Checkbox
  40. elements: ons-input
  41. markup: |
  42. <label class="checkbox">
  43. <input type="checkbox" class="checkbox__input">
  44. <div class="checkbox__checkmark"></div>
  45. OFF
  46. </label>
  47. <label class="checkbox">
  48. <input type="checkbox" class="checkbox__input" checked="checked">
  49. <div class="checkbox__checkmark"></div>
  50. ON
  51. </label>
  52. <label class="checkbox">
  53. <input type="checkbox" class="checkbox__input" disabled>
  54. <div class="checkbox__checkmark"></div>
  55. Disabled
  56. </label>
  57. */
  58. .checkbox {
  59. @apply(--checkbox__label);
  60. line-height: var(--checkbox-size);
  61. }
  62. .checkbox__checkmark {
  63. @apply(--checkbox);
  64. height: var(--checkbox-size);
  65. width: var(--checkbox-size);
  66. pointer-events: none;
  67. }
  68. .checkbox__input,
  69. .checkbox__input:checked {
  70. @apply(--hide-input);
  71. }
  72. .checkbox__checkmark:before {
  73. @apply(--checkbox--before);
  74. @apply(--reset-box-model);
  75. width: var(--checkbox-size);
  76. height: var(--checkbox-size);
  77. background: transparent;
  78. border: var(--checkbox-border);
  79. border-radius: var(--checkbox-size);
  80. left: 0;
  81. }
  82. /* checkmark's line */
  83. .checkbox__checkmark:after {
  84. @apply(--checkbox--after);
  85. top: 7px;
  86. left: 5px;
  87. width: 11px;
  88. height: 5px;
  89. background: transparent;
  90. border: var(--checkmark-border);
  91. border-width: 1px;
  92. border-top: none;
  93. border-right: none;
  94. border-radius: 0;
  95. transform: rotate(-45deg);
  96. opacity: 0;
  97. }
  98. :checked + .checkbox__checkmark:before {
  99. background: var(--background-color--before--checkbox);
  100. border: none;
  101. }
  102. :checked + .checkbox__checkmark:after {
  103. opacity: 1;
  104. }
  105. :disabled + .checkbox__checkmark {
  106. @apply(--checkbox--disabled);
  107. }
  108. :disabled:active + .checkbox__checkmark:before { /* FIXME */
  109. background: transparent;
  110. }
  111. /*~
  112. name: No border Checkbox
  113. category: Checkbox
  114. elements: ons-input
  115. markup: |
  116. <label class="checkbox--noborder">
  117. <input type="checkbox" class="checkbox__input checkbox--noborder__input">
  118. <div class="checkbox__checkmark checkbox--noborder__checkmark"></div>
  119. OFF
  120. </label>
  121. <label class="checkbox--noborder">
  122. <input type="checkbox" class="checkbox__input checkbox--noborder__input" checked="checked">
  123. <div class="checkbox__checkmark checkbox--noborder__checkmark"></div>
  124. ON
  125. </label>
  126. <label class="checkbox--noborder">
  127. <input type="checkbox" class="checkbox__input checkbox--noborder__input" disabled checked="checked">
  128. <div class="checkbox__checkmark checkbox--noborder__checkmark"></div>
  129. Disabled
  130. </label>
  131. */
  132. .checkbox--noborder {
  133. @apply(--checkbox__label);
  134. line-height: var(--checkbox-size);
  135. @apply(--hide-input-parent);
  136. }
  137. .checkbox--noborder__input {
  138. @apply(--hide-input);
  139. }
  140. .checkbox--noborder__checkmark {
  141. position: relative;
  142. display: inline-block;
  143. vertical-align: top;
  144. @apply(--reset-cursor);
  145. @apply(--reset-box-model);
  146. width: var(--checkbox-size);
  147. height: var(--checkbox-size);
  148. background: transparent;
  149. border: none;
  150. }
  151. .checkbox--noborder__checkmark:before {
  152. content: '';
  153. position: absolute;
  154. width: var(--checkbox-size);
  155. height: var(--checkbox-size);
  156. background: transparent;
  157. border: none;
  158. border-radius: var(--checkbox-size);
  159. left: 0;
  160. }
  161. /* checkmark's line */
  162. .checkbox--noborder__checkmark:after {
  163. @apply(--checkmark);
  164. }
  165. :checked + .checkbox--noborder__checkmark:before {
  166. background: transparent;
  167. border: none;
  168. }
  169. :checked + .checkbox--noborder__checkmark:after {
  170. opacity: 1;
  171. }
  172. :focus + .checkbox--noborder__checkmark:before {
  173. border: none;
  174. }
  175. :disabled + .checkbox--noborder__checkmark {
  176. @apply(--disabled);
  177. }
  178. :disabled:active + .checkbox--noborder__checkmark:before {
  179. background: transparent;
  180. border: none;
  181. }
  182. /*~
  183. name: Material Checkbox
  184. category: Checkbox
  185. elements: ons-input
  186. markup: |
  187. <label class="checkbox checkbox--material">
  188. <input type="checkbox" class="checkbox__input checkbox--material__input">
  189. <div class="checkbox__checkmark checkbox--material__checkmark"></div>
  190. OFF
  191. </label>
  192. <label class="checkbox checkbox--material">
  193. <input type="checkbox" class="checkbox__input checkbox--material__input" checked="checked">
  194. <div class="checkbox__checkmark checkbox--material__checkmark"></div>
  195. ON
  196. </label>
  197. <label class="checkbox checkbox--material">
  198. <input type="checkbox" class="checkbox__input checkbox--material__input" checked="checked" disabled>
  199. <div class="checkbox__checkmark checkbox--material__checkmark"></div>
  200. ON
  201. </label>
  202. <label class="checkbox checkbox--material">
  203. <input type="checkbox" class="checkbox__input checkbox--material__input" disabled>
  204. <div class="checkbox__checkmark checkbox--material__checkmark"></div>
  205. Disabled
  206. </label>
  207. */
  208. .checkbox--material {
  209. line-height: var(--material-checkbox-size);
  210. @apply(--material-font);
  211. overflow: visible;
  212. }
  213. .checkbox--material__checkmark {
  214. width: var(--material-checkbox-size);
  215. height: var(--material-checkbox-size);
  216. }
  217. .checkbox--material__checkmark:before {
  218. border-radius: 2px;
  219. height: var(--material-checkbox-size);
  220. width: var(--material-checkbox-size);
  221. border: 2px solid var(--material-checkbox-inactive-color);
  222. transition: background-color 0.1s linear 0.2s, border-color 0.1s linear 0.2s;
  223. background-color: transparent;
  224. }
  225. :checked + .checkbox--material__checkmark:before {
  226. border: 2px solid var(--material-checkbox-active-color);
  227. background-color: var(--material-checkbox-active-color);
  228. transition: background-color 0.1s linear, border-color 0.1s linear;
  229. }
  230. .checkbox--material__checkmark:after {
  231. border-color: var(--material-checkbox-checkmark-color);
  232. transition: transform 0.2s ease 0;
  233. width: 10px;
  234. height: 5px;
  235. top: 4px;
  236. left: 3px;
  237. transform: scale(0) rotate(-45deg);
  238. border-width: 2px;
  239. }
  240. :checked + .checkbox--material__checkmark:after {
  241. transition: transform 0.2s ease 0.2s;
  242. width: 10px;
  243. height: 5px;
  244. top: 4px;
  245. left: 3px;
  246. transform: scale(1) rotate(-45deg);
  247. border-width: 2px;
  248. }
  249. /* active ring effect */
  250. .checkbox--material__input:before {
  251. content: '';
  252. opacity: 0;
  253. position: absolute;
  254. top: 0;
  255. left: 0;
  256. width: var(--material-checkbox-size);
  257. height: var(--material-checkbox-size);
  258. box-shadow: 0 0 0 var(--material-checkbox-focus-ring-shadow-size) var(--material-checkbox-inactive-color);
  259. box-sizing: border-box;
  260. border-radius: 50%;
  261. background-color: var(--material-checkbox-inactive-color);
  262. pointer-events: none;
  263. display: block;
  264. transform: scale3d(0.2, 0.2, 0.2);
  265. transition: opacity 0.25s ease-out, transform 0.1s ease-out;
  266. }
  267. .checkbox--material__input:checked:before {
  268. box-shadow: 0 0 0 var(--material-checkbox-focus-ring-shadow-size) var(--material-checkbox-active-color);
  269. background-color: var(--material-checkbox-active-color);
  270. }
  271. .checkbox--material__input:active:before {
  272. opacity: .15;
  273. transform: scale3d(1, 1, 1);
  274. }
  275. :disabled + .checkbox--material__checkmark {
  276. opacity: 1;
  277. }
  278. :disabled + .checkbox--material__checkmark:before {
  279. border-color: #afafaf;
  280. }
  281. :disabled:checked + .checkbox--material__checkmark:before {
  282. background-color: #afafaf;
  283. }
  284. :disabled:checked + .checkbox--material__checkmark:after {
  285. border-color: #ffffff;
  286. }