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.

427 lines
8.0 KiB

10 years ago
10 years ago
  1. /*
  2. * # Semantic - Checkbox
  3. * http://github.com/semantic-org/semantic-ui/
  4. *
  5. *
  6. * Copyright 2014 Contributor
  7. * Released under the MIT license
  8. * http://opensource.org/licenses/MIT
  9. *
  10. */
  11. /*******************************
  12. Theme
  13. *******************************/
  14. @type : 'module';
  15. @element : 'checkbox';
  16. @import '../../semantic.config';
  17. /*******************************
  18. Checkbox
  19. *******************************/
  20. /*--------------
  21. Content
  22. ---------------*/
  23. .ui.checkbox {
  24. position: relative;
  25. display: inline-block;
  26. height: @checkboxSize;
  27. font-size: 1rem;
  28. line-height: @checkboxLineHeight;
  29. min-width: @checkboxSize;
  30. backface-visibility: hidden;
  31. outline: none;
  32. vertical-align: middle;
  33. }
  34. .ui.checkbox input {
  35. position: absolute;
  36. top: 0px;
  37. left: 0px;
  38. opacity: 0;
  39. outline: none;
  40. z-index: -1;
  41. }
  42. /*--------------
  43. Box
  44. ---------------*/
  45. .ui.checkbox .box,
  46. .ui.checkbox label {
  47. cursor: pointer;
  48. padding-left: @labelPadding;
  49. outline: none;
  50. }
  51. .ui.checkbox label {
  52. font-size: @fontSize;
  53. }
  54. .ui.checkbox .box:before,
  55. .ui.checkbox label:before {
  56. position: absolute;
  57. line-height: 1;
  58. width: @checkboxSize;
  59. height: @checkboxSize;
  60. top: 0em;
  61. left: 0em;
  62. content: '';
  63. background: @checkboxBackground;
  64. border-radius: @checkboxBorderRadius;
  65. transition: @checkboxTransition;
  66. border: @checkboxBorder;
  67. }
  68. /*--------------
  69. Checkmark
  70. ---------------*/
  71. .ui.checkbox .box:after,
  72. .ui.checkbox label:after {
  73. position: absolute;
  74. top: @checkboxCheckTop;
  75. left: @checkboxCheckLeft;
  76. line-height: @checkboxSize;
  77. width: @checkboxSize;
  78. height: @checkboxSize;
  79. text-align: center;
  80. opacity: 0;
  81. color: @checkboxColor;
  82. transition: all 0.1s ease;
  83. }
  84. /*--------------
  85. Label
  86. ---------------*/
  87. /* Inside */
  88. .ui.checkbox label,
  89. .ui.checkbox + label {
  90. cursor: pointer;
  91. color: @labelColor;
  92. transition: color 0.2s ease;
  93. user-select: none;
  94. }
  95. /* Outside */
  96. .ui.checkbox + label {
  97. vertical-align: middle;
  98. }
  99. /*******************************
  100. States
  101. *******************************/
  102. /*--------------
  103. Hover
  104. ---------------*/
  105. .ui.checkbox .box:hover::before,
  106. .ui.checkbox label:hover::before {
  107. background: @checkboxHoverBackground;
  108. border: @checkboxHoverBorder;
  109. }
  110. .ui.checkbox label:hover,
  111. .ui.checkbox + label:hover {
  112. color: @labelHoverColor;
  113. }
  114. /*--------------
  115. Down
  116. ---------------*/
  117. .ui.checkbox .box:active::before,
  118. .ui.checkbox label:active::before {
  119. background: @checkboxSelectedBackground;
  120. border: 1px solid @checkboxSelectedBorder;
  121. }
  122. .ui.checkbox input:active ~ label {
  123. color: @labelSelectedColor;
  124. }
  125. /*--------------
  126. Focus
  127. ---------------*/
  128. .ui.checkbox input:focus ~ .box:before,
  129. .ui.checkbox input:focus ~ label:before {
  130. background: @checkboxSelectedBackground;
  131. border: 1px solid @checkboxSelectedBorder;
  132. }
  133. .ui.checkbox input:focus ~ label {
  134. color: @labelSelectedColor;
  135. }
  136. /*--------------
  137. Active
  138. ---------------*/
  139. .ui.checkbox input:checked ~ .box:after,
  140. .ui.checkbox input:checked ~ label:after {
  141. opacity: 1;
  142. }
  143. /*--------------
  144. Disabled
  145. ---------------*/
  146. .ui.disabled.checkbox .box:after,
  147. .ui.disabled.checkbox label,
  148. .ui.checkbox input[disabled] ~ .box:after,
  149. .ui.checkbox input[disabled] ~ label {
  150. opacity: @disabledCheckboxOpacity;
  151. color: @disabledCheckboxLabelColor;
  152. }
  153. /*******************************
  154. Types
  155. *******************************/
  156. /*--------------
  157. Radio
  158. ---------------*/
  159. .ui.radio.checkbox {
  160. height: @checkboxRadioSize;
  161. }
  162. /* Box */
  163. .ui.radio.checkbox .box:before,
  164. .ui.radio.checkbox label:before {
  165. width: @checkboxRadioSize;
  166. height: @checkboxRadioSize;
  167. border-radius: @circularRadius;
  168. top: @checkboxRadioTop;
  169. left: @checkboxRadioLeft;
  170. transform: none;
  171. }
  172. /* Circle */
  173. .ui.radio.checkbox .box:after,
  174. .ui.radio.checkbox label:after {
  175. border: none;
  176. width: @checkboxRadioSize;
  177. height: @checkboxRadioSize;
  178. line-height: @checkboxRadioSize;
  179. top: @checkboxRadioTop;
  180. left: @checkboxRadioLeft;
  181. font-size: @checkboxRadioCircleSize;
  182. }
  183. /* Radio Checkbox */
  184. .ui.radio.checkbox .box:after,
  185. .ui.radio.checkbox label:after {
  186. width: @checkboxRadioSize;
  187. height: @checkboxRadioSize;
  188. border-radius: @checkboxBulletRadius;
  189. transform: scale(@checkboxBulletScale);
  190. background-color: @checkboxBulletColor;
  191. }
  192. /*--------------
  193. Slider
  194. ---------------*/
  195. .ui.slider.checkbox {
  196. cursor: pointer;
  197. height: @sliderSize;
  198. }
  199. .ui.slider.checkbox .box,
  200. .ui.slider.checkbox label {
  201. padding-left: @sliderLabelDistance;
  202. line-height: @sliderLabelLineHeight;
  203. color: @sliderOffLabelColor;
  204. }
  205. /* Line */
  206. .ui.slider.checkbox .box:before,
  207. .ui.slider.checkbox label:before {
  208. cursor: pointer;
  209. display: block;
  210. position: absolute;
  211. content: '';
  212. top: @sliderLineVerticalOffset;
  213. left: 0em;
  214. z-index: 1;
  215. border: none !important;
  216. background-color: @sliderLineColor;
  217. width: @sliderLineWidth;
  218. height: @sliderLineHeight;
  219. transform: none;
  220. border-radius: @sliderLineRadius;
  221. transition:
  222. background 0.3s ease
  223. ;
  224. }
  225. /* Handle */
  226. .ui.slider.checkbox .box:after,
  227. .ui.slider.checkbox label:after {
  228. background: @handleBackground;
  229. position: absolute;
  230. content: '';
  231. opacity: 1;
  232. z-index: 2;
  233. border: none;
  234. box-shadow: @handleBoxShadow;
  235. width: @sliderHandleSize;
  236. height: @sliderHandleSize;
  237. top: @sliderHandleOffset;
  238. left: 0em;
  239. transform: none;
  240. border-radius: @circularRadius;
  241. transition:
  242. left 0.3s ease 0s
  243. ;
  244. }
  245. /* Focus */
  246. .ui.slider.checkbox input:focus ~ .box:before,
  247. .ui.slider.checkbox input:focus ~ label:before {
  248. background-color: @toggleFocusColor;
  249. border: none;
  250. }
  251. /* Hover */
  252. .ui.slider.checkbox .box:hover,
  253. .ui.slider.checkbox label:hover {
  254. color: @sliderHoverLabelColor;
  255. }
  256. .ui.slider.checkbox .box:hover::before,
  257. .ui.slider.checkbox label:hover::before {
  258. background: @sliderHoverLaneBackground;
  259. }
  260. /* Active */
  261. .ui.slider.checkbox input:checked ~ .box,
  262. .ui.slider.checkbox input:checked ~ label {
  263. color: @sliderOnLabelColor;
  264. }
  265. .ui.slider.checkbox input:checked ~ .box:before,
  266. .ui.slider.checkbox input:checked ~ label:before {
  267. background-color: @sliderOnLineColor;
  268. }
  269. .ui.slider.checkbox input:checked ~ .box:after,
  270. .ui.slider.checkbox input:checked ~ label:after {
  271. left: @sliderTravelDistance;
  272. }
  273. /*--------------
  274. Toggle
  275. ---------------*/
  276. .ui.toggle.checkbox {
  277. cursor: pointer;
  278. height: @toggleSize;
  279. }
  280. .ui.toggle.checkbox .box,
  281. .ui.toggle.checkbox label {
  282. height: @toggleSize;
  283. padding-left: @toggleLabelDistance;
  284. line-height: @toggleLabelLineHeight;
  285. color: @toggleOffLabelColor;
  286. }
  287. /* Switch */
  288. .ui.toggle.checkbox .box:before,
  289. .ui.toggle.checkbox label:before {
  290. cursor: pointer;
  291. display: block;
  292. position: absolute;
  293. content: '';
  294. top: @toggleLaneVerticalOffset;
  295. z-index: 1;
  296. border: none;
  297. background-color: @neutralCheckbox;
  298. width: @toggleLaneWidth;
  299. height: @toggleLaneHeight;
  300. border-radius: @toggleHandleRadius;
  301. }
  302. /* Handle */
  303. .ui.toggle.checkbox .box:after,
  304. .ui.toggle.checkbox label:after {
  305. background: @handleBackground;
  306. position: absolute;
  307. content: '';
  308. opacity: 1;
  309. z-index: 2;
  310. border: none;
  311. box-shadow: @handleBoxShadow;
  312. width: @toggleHandleSize;
  313. height: @toggleHandleSize;
  314. top: @toggleHandleOffset;
  315. left: 0em;
  316. border-radius: @circularRadius;
  317. transition:
  318. background 0.3s ease 0s,
  319. left 0.3s ease 0s
  320. ;
  321. }
  322. .ui.toggle.checkbox input ~ .box:after,
  323. .ui.toggle.checkbox input ~ label:after {
  324. left: @toggleOffOffset;
  325. }
  326. /* Focus */
  327. .ui.toggle.checkbox input:focus ~ .box:before,
  328. .ui.toggle.checkbox input:focus ~ label:before {
  329. background-color: @toggleFocusColor;
  330. border: none;
  331. }
  332. /* Hover */
  333. .ui.toggle.checkbox .box:hover::before,
  334. .ui.toggle.checkbox label:hover::before {
  335. background-color: @toggleHoverColor;
  336. border: none;
  337. }
  338. /* Active */
  339. .ui.toggle.checkbox input:checked ~ .box,
  340. .ui.toggle.checkbox input:checked ~ label {
  341. color: @toggleOnLabelColor;
  342. }
  343. .ui.toggle.checkbox input:checked ~ .box:before,
  344. .ui.toggle.checkbox input:checked ~ label:before {
  345. background-color: @toggleOnLaneColor;
  346. }
  347. .ui.toggle.checkbox input:checked ~ .box:after,
  348. .ui.toggle.checkbox input:checked ~ label:after {
  349. left: @toggleOnOffset;
  350. }
  351. .loadUIOverrides();