ladda.scss 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487
  1. /*!
  2. * Ladda
  3. * http://lab.hakim.se/ladda
  4. * MIT licensed
  5. *
  6. * Copyright (C) 2015 Hakim El Hattab, http://hakim.se
  7. */
  8. /*************************************
  9. * CONFIG
  10. */
  11. $spinnerSize: 32px;
  12. /*************************************
  13. * MIXINS
  14. */
  15. @mixin prefix ( $property, $value ) {
  16. -webkit-#{$property}: $value;
  17. -moz-#{$property}: $value;
  18. -ms-#{$property}: $value;
  19. -o-#{$property}: $value;
  20. #{$property}: $value;
  21. }
  22. @mixin transition( $value ) {
  23. -webkit-transition: $value !important; // important to override bootstrap
  24. -moz-transition: $value !important;
  25. -ms-transition: $value !important;
  26. -o-transition: $value !important;
  27. transition: $value !important;
  28. }
  29. @mixin transform( $value ) {
  30. @include prefix( transform, $value );
  31. }
  32. @mixin transform-origin( $value ) {
  33. @include prefix( transform-origin, $value );
  34. }
  35. @mixin buttonColor( $name, $color ) {
  36. &[data-color=#{$name}] {
  37. background: $color;
  38. &:hover {
  39. background-color: lighten( $color, 5% );
  40. }
  41. }
  42. }
  43. /*************************************
  44. * BUTTON BASE
  45. */
  46. .ladda-button {
  47. position: relative;
  48. }
  49. /* Spinner animation */
  50. .ladda-button .ladda-spinner {
  51. position: absolute;
  52. z-index: 2;
  53. display: inline-block;
  54. width: $spinnerSize;
  55. height: $spinnerSize;
  56. top: 50%;
  57. margin-top: 0;
  58. opacity: 0;
  59. pointer-events: none;
  60. }
  61. /* Button label */
  62. .ladda-button .ladda-label {
  63. position: relative;
  64. z-index: 3;
  65. }
  66. /* Progress bar */
  67. .ladda-button .ladda-progress {
  68. position: absolute;
  69. width: 0;
  70. height: 100%;
  71. left: 0;
  72. top: 0;
  73. background: rgba( 0, 0, 0, 0.2 );
  74. visibility: hidden;
  75. opacity: 0;
  76. @include transition( 0.1s linear all );
  77. }
  78. .ladda-button[data-loading] .ladda-progress {
  79. opacity: 1;
  80. visibility: visible;
  81. }
  82. /*************************************
  83. * EASING
  84. */
  85. .ladda-button,
  86. .ladda-button .ladda-spinner,
  87. .ladda-button .ladda-label {
  88. @include transition( 0.3s cubic-bezier(0.175, 0.885, 0.320, 1.275) all );
  89. }
  90. .ladda-button[data-style=zoom-in],
  91. .ladda-button[data-style=zoom-in] .ladda-spinner,
  92. .ladda-button[data-style=zoom-in] .ladda-label,
  93. .ladda-button[data-style=zoom-out],
  94. .ladda-button[data-style=zoom-out] .ladda-spinner,
  95. .ladda-button[data-style=zoom-out] .ladda-label {
  96. @include transition( 0.3s ease all );
  97. }
  98. /*************************************
  99. * EXPAND LEFT
  100. */
  101. .ladda-button[data-style=expand-right] {
  102. .ladda-spinner {
  103. right: $spinnerSize/-2 + 10;
  104. }
  105. &[data-size="s"] .ladda-spinner,
  106. &[data-size="xs"] .ladda-spinner {
  107. right: $spinnerSize/-2 + 4;
  108. }
  109. &[data-loading] {
  110. padding-right: 56px;
  111. .ladda-spinner {
  112. opacity: 1;
  113. }
  114. &[data-size="s"],
  115. &[data-size="xs"] {
  116. padding-right: 40px;
  117. }
  118. }
  119. }
  120. /*************************************
  121. * EXPAND RIGHT
  122. */
  123. .ladda-button[data-style=expand-left] {
  124. .ladda-spinner {
  125. left: $spinnerSize/2 + 10;
  126. }
  127. &[data-size="s"] .ladda-spinner,
  128. &[data-size="xs"] .ladda-spinner {
  129. left: 4px;
  130. }
  131. &[data-loading] {
  132. padding-left: 56px;
  133. .ladda-spinner {
  134. opacity: 1;
  135. }
  136. &[data-size="s"],
  137. &[data-size="xs"] {
  138. padding-left: 40px;
  139. }
  140. }
  141. }
  142. /*************************************
  143. * EXPAND UP
  144. */
  145. .ladda-button[data-style=expand-up] {
  146. overflow: hidden;
  147. .ladda-spinner {
  148. top: -$spinnerSize;
  149. left: 50%;
  150. margin-left: 0;
  151. }
  152. &[data-loading] {
  153. padding-top: 54px;
  154. .ladda-spinner {
  155. opacity: 1;
  156. top: ($spinnerSize/ 2) + 10;
  157. margin-top: 0;
  158. }
  159. &[data-size="s"],
  160. &[data-size="xs"] {
  161. padding-top: 32px;
  162. .ladda-spinner {
  163. top: 4px;
  164. }
  165. }
  166. }
  167. }
  168. /*************************************
  169. * EXPAND DOWN
  170. */
  171. .ladda-button[data-style=expand-down] {
  172. overflow: hidden;
  173. .ladda-spinner {
  174. top: 62px;
  175. left: 50%;
  176. margin-left: 0;
  177. }
  178. &[data-size="s"] .ladda-spinner,
  179. &[data-size="xs"] .ladda-spinner {
  180. top: 40px;
  181. }
  182. &[data-loading] {
  183. padding-bottom: 54px;
  184. .ladda-spinner {
  185. opacity: 1;
  186. }
  187. &[data-size="s"],
  188. &[data-size="xs"] {
  189. padding-bottom: 32px;
  190. }
  191. }
  192. }
  193. /*************************************
  194. * SLIDE LEFT
  195. */
  196. .ladda-button[data-style=slide-left] {
  197. overflow: hidden;
  198. .ladda-label {
  199. position: relative;
  200. }
  201. .ladda-spinner {
  202. left: 100%;
  203. margin-left: 0;
  204. }
  205. &[data-loading] {
  206. .ladda-label {
  207. opacity: 0;
  208. left: -100%;
  209. }
  210. .ladda-spinner {
  211. opacity: 1;
  212. left: 50%;
  213. }
  214. }
  215. }
  216. /*************************************
  217. * SLIDE RIGHT
  218. */
  219. .ladda-button[data-style=slide-right] {
  220. overflow: hidden;
  221. .ladda-label {
  222. position: relative;
  223. }
  224. .ladda-spinner {
  225. right: 100%;
  226. margin-left: 0;
  227. left: $spinnerSize/2
  228. }
  229. &[data-loading] {
  230. .ladda-label {
  231. opacity: 0;
  232. left: 100%;
  233. }
  234. .ladda-spinner {
  235. opacity: 1;
  236. left: 50%;
  237. }
  238. }
  239. }
  240. /*************************************
  241. * SLIDE UP
  242. */
  243. .ladda-button[data-style=slide-up] {
  244. overflow: hidden;
  245. .ladda-label {
  246. position: relative;
  247. }
  248. .ladda-spinner {
  249. left: 50%;
  250. margin-left: 0;
  251. margin-top: 1em;
  252. }
  253. &[data-loading] {
  254. .ladda-label {
  255. opacity: 0;
  256. top: -1em;
  257. }
  258. .ladda-spinner {
  259. opacity: 1;
  260. margin-top: 0;
  261. }
  262. }
  263. }
  264. /*************************************
  265. * SLIDE DOWN
  266. */
  267. .ladda-button[data-style=slide-down] {
  268. overflow: hidden;
  269. .ladda-label {
  270. position: relative;
  271. }
  272. .ladda-spinner {
  273. left: 50%;
  274. margin-left: 0;
  275. margin-top: -2em;
  276. }
  277. &[data-loading] {
  278. .ladda-label {
  279. opacity: 0;
  280. top: 1em;
  281. }
  282. .ladda-spinner {
  283. opacity: 1;
  284. margin-top: 0;
  285. }
  286. }
  287. }
  288. /*************************************
  289. * ZOOM-OUT
  290. */
  291. .ladda-button[data-style=zoom-out] {
  292. overflow: hidden;
  293. }
  294. .ladda-button[data-style=zoom-out] .ladda-spinner {
  295. left: 50%;
  296. margin-left: $spinnerSize;
  297. @include transform( scale( 2.5 ) );
  298. }
  299. .ladda-button[data-style=zoom-out] .ladda-label {
  300. position: relative;
  301. display: inline-block;
  302. }
  303. .ladda-button[data-style=zoom-out][data-loading] .ladda-label {
  304. opacity: 0;
  305. @include transform( scale( 0.5 ) );
  306. }
  307. .ladda-button[data-style=zoom-out][data-loading] .ladda-spinner {
  308. opacity: 1;
  309. margin-left: 0;
  310. @include transform( none );
  311. }
  312. /*************************************
  313. * ZOOM-IN
  314. */
  315. .ladda-button[data-style=zoom-in] {
  316. overflow: hidden;
  317. }
  318. .ladda-button[data-style=zoom-in] .ladda-spinner {
  319. left: 50%;
  320. margin-left: $spinnerSize/-2;
  321. @include transform( scale( 0.2 ) );
  322. }
  323. .ladda-button[data-style=zoom-in] .ladda-label {
  324. position: relative;
  325. display: inline-block;
  326. }
  327. .ladda-button[data-style=zoom-in][data-loading] .ladda-label {
  328. opacity: 0;
  329. @include transform( scale( 2.2 ) );
  330. }
  331. .ladda-button[data-style=zoom-in][data-loading] .ladda-spinner {
  332. opacity: 1;
  333. margin-left: 0;
  334. @include transform( none );
  335. }
  336. /*************************************
  337. * CONTRACT
  338. */
  339. .ladda-button[data-style=contract] {
  340. overflow: hidden;
  341. width: 100px;
  342. }
  343. .ladda-button[data-style=contract] .ladda-spinner {
  344. left: 50%;
  345. margin-left: 0;
  346. }
  347. .ladda-button[data-style=contract][data-loading] {
  348. border-radius: 50%;
  349. width: 52px;
  350. }
  351. .ladda-button[data-style=contract][data-loading] .ladda-label {
  352. opacity: 0;
  353. }
  354. .ladda-button[data-style=contract][data-loading] .ladda-spinner {
  355. opacity: 1;
  356. }
  357. /*************************************
  358. * OVERLAY
  359. */
  360. .ladda-button[data-style=contract-overlay] {
  361. overflow: hidden;
  362. width: 100px;
  363. box-shadow: 0px 0px 0px 2000px rgba(0,0,0,0);
  364. }
  365. .ladda-button[data-style=contract-overlay] .ladda-spinner {
  366. left: 50%;
  367. margin-left: 0;
  368. }
  369. .ladda-button[data-style=contract-overlay][data-loading] {
  370. border-radius: 50%;
  371. width: 52px;
  372. /*outline: 10000px solid rgba( 0, 0, 0, 0.5 );*/
  373. box-shadow: 0px 0px 0px 2000px rgba(0,0,0,0.8);
  374. }
  375. .ladda-button[data-style=contract-overlay][data-loading] .ladda-label {
  376. opacity: 0;
  377. }
  378. .ladda-button[data-style=contract-overlay][data-loading] .ladda-spinner {
  379. opacity: 1;
  380. }