_switch.scss 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. $switch-border-radius: 1rem;
  2. $switch-width: 3.5rem;
  3. $switch-height: 1.5rem;
  4. /* ============================================================
  5. COMMON
  6. ============================================================ */
  7. .cmn-toggle {
  8. position: absolute;
  9. margin-left: -9999px;
  10. visibility: hidden;
  11. }
  12. .cmn-toggle + label {
  13. display: block;
  14. position: relative;
  15. cursor: pointer;
  16. outline: none;
  17. -webkit-user-select: none;
  18. -moz-user-select: none;
  19. -ms-user-select: none;
  20. user-select: none;
  21. }
  22. /* ============================================================
  23. SWITCH 1 - ROUND
  24. ============================================================ */
  25. input.cmn-toggle-round + label {
  26. padding: 2px;
  27. width: $switch-width;
  28. height: $switch-height;
  29. background-color: $dark-1;
  30. border-radius: $switch-border-radius;
  31. }
  32. input.cmn-toggle-round + label:before, input.cmn-toggle-round + label:after {
  33. display: block;
  34. position: absolute;
  35. top: 1px;
  36. left: 1px;
  37. bottom: 1px;
  38. content: "";
  39. }
  40. input.cmn-toggle-round + label:before {
  41. right: 1px;
  42. background-color: $card-background;
  43. border-radius: $switch-border-radius;
  44. box-shadow: $card-shadow;
  45. transition: background 0.4s;
  46. }
  47. input.cmn-toggle-round + label:after {
  48. width: $switch-height;
  49. background-color: $dark-5;
  50. border-radius: 100%;
  51. box-shadow: $card-shadow;
  52. transition: margin 0.4s;
  53. }
  54. input.cmn-toggle-round:checked + label:before {
  55. background-color: $blue;
  56. }
  57. input.cmn-toggle-round:checked + label:after {
  58. margin-left: $switch-width - $switch-height;
  59. }
  60. /* ============================================================
  61. SWITCH 2 - ROUND FLAT
  62. ============================================================ */
  63. input.cmn-toggle-round-flat + label {
  64. padding: 2px;
  65. width: 120px;
  66. height: 60px;
  67. background-color: #dddddd;
  68. -webkit-border-radius: 60px;
  69. -moz-border-radius: 60px;
  70. -ms-border-radius: 60px;
  71. -o-border-radius: 60px;
  72. border-radius: 60px;
  73. -webkit-transition: background 0.4s;
  74. -moz-transition: background 0.4s;
  75. -o-transition: background 0.4s;
  76. transition: background 0.4s;
  77. }
  78. input.cmn-toggle-round-flat + label:before, input.cmn-toggle-round-flat + label:after {
  79. display: block;
  80. position: absolute;
  81. content: "";
  82. }
  83. input.cmn-toggle-round-flat + label:before {
  84. top: 2px;
  85. left: 2px;
  86. bottom: 2px;
  87. right: 2px;
  88. background-color: #fff;
  89. -webkit-border-radius: 60px;
  90. -moz-border-radius: 60px;
  91. -ms-border-radius: 60px;
  92. -o-border-radius: 60px;
  93. border-radius: 60px;
  94. -webkit-transition: background 0.4s;
  95. -moz-transition: background 0.4s;
  96. -o-transition: background 0.4s;
  97. transition: background 0.4s;
  98. }
  99. input.cmn-toggle-round-flat + label:after {
  100. top: 4px;
  101. left: 4px;
  102. bottom: 4px;
  103. width: 52px;
  104. background-color: #dddddd;
  105. -webkit-border-radius: 52px;
  106. -moz-border-radius: 52px;
  107. -ms-border-radius: 52px;
  108. -o-border-radius: 52px;
  109. border-radius: 52px;
  110. -webkit-transition: margin 0.4s, background 0.4s;
  111. -moz-transition: margin 0.4s, background 0.4s;
  112. -o-transition: margin 0.4s, background 0.4s;
  113. transition: margin 0.4s, background 0.4s;
  114. }
  115. input.cmn-toggle-round-flat:checked + label {
  116. background-color: #8ce196;
  117. }
  118. input.cmn-toggle-round-flat:checked + label:after {
  119. margin-left: 60px;
  120. background-color: #8ce196;
  121. }
  122. /* ============================================================
  123. SWITCH 3 - YES NO
  124. ============================================================ */
  125. input.cmn-toggle-yes-no + label {
  126. padding: 2px;
  127. width: 120px;
  128. height: 60px;
  129. }
  130. input.cmn-toggle-yes-no + label:before, input.cmn-toggle-yes-no + label:after {
  131. display: block;
  132. position: absolute;
  133. top: 0;
  134. left: 0;
  135. bottom: 0;
  136. right: 0;
  137. color: #fff;
  138. font-family: "Roboto Slab", serif;
  139. font-size: 20px;
  140. text-align: center;
  141. line-height: 60px;
  142. }
  143. input.cmn-toggle-yes-no + label:before {
  144. background-color: #dddddd;
  145. content: attr(data-off);
  146. -webkit-transition: -webkit-transform 0.5s;
  147. -moz-transition: -moz-transform 0.5s;
  148. -o-transition: -o-transform 0.5s;
  149. transition: transform 0.5s;
  150. -webkit-backface-visibility: hidden;
  151. -moz-backface-visibility: hidden;
  152. -ms-backface-visibility: hidden;
  153. -o-backface-visibility: hidden;
  154. backface-visibility: hidden;
  155. }
  156. input.cmn-toggle-yes-no + label:after {
  157. background-color: #8ce196;
  158. content: attr(data-on);
  159. -webkit-transition: -webkit-transform 0.5s;
  160. -moz-transition: -moz-transform 0.5s;
  161. -o-transition: -o-transform 0.5s;
  162. transition: transform 0.5s;
  163. -webkit-transform: rotateY(180deg);
  164. -moz-transform: rotateY(180deg);
  165. -ms-transform: rotateY(180deg);
  166. -o-transform: rotateY(180deg);
  167. transform: rotateY(180deg);
  168. -webkit-backface-visibility: hidden;
  169. -moz-backface-visibility: hidden;
  170. -ms-backface-visibility: hidden;
  171. -o-backface-visibility: hidden;
  172. backface-visibility: hidden;
  173. }
  174. input.cmn-toggle-yes-no:checked + label:before {
  175. -webkit-transform: rotateY(180deg);
  176. -moz-transform: rotateY(180deg);
  177. -ms-transform: rotateY(180deg);
  178. -o-transform: rotateY(180deg);
  179. transform: rotateY(180deg);
  180. }
  181. input.cmn-toggle-yes-no:checked + label:after {
  182. -webkit-transform: rotateY(0);
  183. -moz-transform: rotateY(0);
  184. -ms-transform: rotateY(0);
  185. -o-transform: rotateY(0);
  186. transform: rotateY(0);
  187. }