loading.scss 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. /**
  2. * @author chuzhixin 1204505056@qq.com (不想保留author可删除)
  3. * @description 全局加载动画
  4. */
  5. @charset "utf-8";
  6. @import "./spinner/dots.css";
  7. @import "./spinner/gauge.css";
  8. @import "./spinner/inner-circles.css";
  9. @import "./spinner/plus.css";
  10. $base-loading: ".vab-loading-type";
  11. /* 自定义loading开始 */
  12. #{$base-loading}1 {
  13. display: flex;
  14. width: 36px;
  15. height: 36px;
  16. margin: 0 auto 15px;
  17. border: 3px solid transparent;
  18. border-top-color: $base-color-blue;
  19. border-bottom-color: $base-color-blue;
  20. border-radius: 50%;
  21. animation: vabLoading1-0 0.8s linear infinite;
  22. }
  23. #{$base-loading}1::before {
  24. display: block;
  25. width: 8px;
  26. height: 8px;
  27. margin: auto;
  28. content: "";
  29. border: 3px solid $base-color-blue;
  30. border-radius: 50%;
  31. animation: vabLoading1 0.5s alternate ease-in infinite;
  32. }
  33. @keyframes vabLoading1-0 {
  34. to {
  35. transform: rotate(360deg);
  36. }
  37. }
  38. @keyframes vabLoading1 {
  39. from {
  40. transform: scale(0.5);
  41. }
  42. to {
  43. transform: scale(1.2);
  44. }
  45. }
  46. #{$base-loading}2 {
  47. width: 20px;
  48. height: 20px;
  49. margin-top: -40px;
  50. margin-left: -10px;
  51. animation: vabLoading2 1s linear reverse infinite;
  52. }
  53. #{$base-loading}2::before {
  54. display: block;
  55. width: 36px;
  56. height: 36px;
  57. margin-top: -17px;
  58. margin-left: -18px;
  59. content: "";
  60. animation: vabLoading2 0.4s linear infinite;
  61. }
  62. #{$base-loading}2::after {
  63. display: block;
  64. width: 8px;
  65. height: 8px;
  66. margin-top: -3px;
  67. margin-left: -4px;
  68. content: "";
  69. animation: vabLoading2 0.4s linear infinite;
  70. }
  71. #{$base-loading}2::before,
  72. #{$base-loading}2,
  73. #{$base-loading}2::after {
  74. position: absolute;
  75. top: 40%;
  76. left: 50%;
  77. border: 3px solid transparent;
  78. border-top-color: $base-color-blue;
  79. border-right-color: $base-color-blue;
  80. border-radius: 50%;
  81. }
  82. @keyframes vabLoading2 {
  83. to {
  84. transform: rotate(360deg);
  85. }
  86. }
  87. #{$base-loading}3 {
  88. display: inline-block;
  89. width: 2.5em;
  90. height: 3em;
  91. margin-bottom: 15px;
  92. border: 3px solid transparent;
  93. border-top-color: $base-color-blue;
  94. border-bottom-color: $base-color-blue;
  95. border-radius: 50%;
  96. animation: vabLoading3 2s ease infinite;
  97. }
  98. @keyframes vabLoading3 {
  99. 50% {
  100. border-width: 8px;
  101. transform: rotate(360deg) scale(0.4, 0.33);
  102. }
  103. 100% {
  104. border-width: 3px;
  105. transform: rotate(720deg) scale(1, 1);
  106. }
  107. }
  108. #{$base-loading}4 {
  109. display: inline-block;
  110. width: 30px;
  111. height: 30px;
  112. margin: 0 auto 10px;
  113. border: 8px solid transparent;
  114. border-bottom-color: $base-color-blue;
  115. border-left-color: $base-color-blue;
  116. border-radius: 50%;
  117. animation: vabLoading4 1s linear infinite normal;
  118. }
  119. #{$base-loading}4::after {
  120. display: block;
  121. width: 15px;
  122. height: 15px;
  123. margin: 0;
  124. content: " ";
  125. border: 6px solid $base-color-blue;
  126. border-bottom-color: transparent;
  127. border-left-color: transparent;
  128. border-radius: 50%;
  129. }
  130. @keyframes vabLoading4 {
  131. 0% {
  132. opacity: 0.2;
  133. transform: rotate(0deg);
  134. }
  135. 50% {
  136. opacity: 1;
  137. transform: rotate(180deg);
  138. }
  139. 100% {
  140. opacity: 0.2;
  141. transform: rotate(360deg);
  142. }
  143. }
  144. #{$base-loading}5 {
  145. display: block;
  146. width: 0;
  147. height: 0;
  148. margin: 0 auto 15px;
  149. border: solid 1.5em $base-color-blue;
  150. border-right: solid 1.5em transparent;
  151. border-left: solid 1.5em transparent;
  152. border-radius: 100%;
  153. animation: vabLoading5 1s linear infinite;
  154. }
  155. @keyframes vabLoading5 {
  156. 0% {
  157. transform: rotate(0deg);
  158. }
  159. 50% {
  160. transform: rotate(60deg);
  161. }
  162. 100% {
  163. transform: rotate(360deg);
  164. }
  165. }
  166. #{$base-loading}6 {
  167. display: block;
  168. width: 0;
  169. height: 0;
  170. margin: 0 auto 25px auto;
  171. perspective: 200px;
  172. }
  173. #{$base-loading}6::before,
  174. #{$base-loading}6::after {
  175. position: absolute;
  176. width: 20px;
  177. height: 20px;
  178. content: "";
  179. background: rgba(0, 0, 0, 0);
  180. animation: vabLoading6 0.5s infinite alternate;
  181. }
  182. #{$base-loading}6::before {
  183. left: 0;
  184. }
  185. #{$base-loading}6::after {
  186. right: 0;
  187. animation-delay: 0.15s;
  188. }
  189. @keyframes vabLoading6 {
  190. 0% {
  191. box-shadow: 0 0 0 rgba(0, 0, 0, 0);
  192. transform: scale(1) translateY(0) rotateX(0deg);
  193. }
  194. 100% {
  195. background: $base-color-blue;
  196. box-shadow: 0 25px 40px rgba($base-color-blue, 0.5);
  197. transform: scale(1.2) translateY(-25px) rotateX(45deg);
  198. }
  199. }
  200. #{$base-loading}7 {
  201. display: block;
  202. width: 25px;
  203. height: 25px;
  204. margin: 0 auto 15px auto;
  205. border: 2px solid $base-color-blue;
  206. border-top-color: rgba($base-color-blue, 0.2);
  207. border-right-color: rgba($base-color-blue, 0.2);
  208. border-bottom-color: rgba($base-color-blue, 0.2);
  209. border-radius: 100%;
  210. animation: vabLoading7 infinite 0.75s linear;
  211. }
  212. @keyframes vabLoading7 {
  213. 0% {
  214. transform: rotate(0);
  215. }
  216. 100% {
  217. transform: rotate(360deg);
  218. }
  219. }
  220. #{$base-loading}8 {
  221. position: relative;
  222. box-sizing: border-box;
  223. display: block;
  224. width: 20px;
  225. height: 20px;
  226. margin: 0 auto 15px auto;
  227. background-color: $base-color-blue;
  228. border-radius: 50%;
  229. box-shadow: 30px 0 0 0 $base-color-blue;
  230. transform: translateX(-15px);
  231. }
  232. #{$base-loading}8::after {
  233. position: absolute;
  234. top: 8px;
  235. left: 9px;
  236. width: 10px;
  237. height: 10px;
  238. content: "";
  239. background-color: $base-color-white;
  240. border-radius: 50%;
  241. box-shadow: 30px 0 0 0 $base-color-white;
  242. animation: vabLoading8 2s ease-in-out infinite alternate;
  243. }
  244. @keyframes vabLoading8 {
  245. 0% {
  246. left: 9px;
  247. }
  248. 100% {
  249. left: 1px;
  250. }
  251. }
  252. #{$base-loading}9 {
  253. position: relative;
  254. box-sizing: border-box;
  255. display: block;
  256. width: 20px;
  257. height: 20px;
  258. margin: 0 auto 15px auto;
  259. border: 1px $base-color-blue solid;
  260. animation: vabLoading9 5s linear infinite;
  261. }
  262. #{$base-loading}9::after {
  263. position: absolute;
  264. top: -8px;
  265. left: 0;
  266. width: 4px;
  267. height: 4px;
  268. content: "";
  269. background-color: $base-color-blue;
  270. animation: vabLoading9_check 1s ease-in-out infinite;
  271. }
  272. @keyframes vabLoading9_check {
  273. 25% {
  274. top: -8px;
  275. left: 22px;
  276. }
  277. 50% {
  278. top: 22px;
  279. left: 22px;
  280. }
  281. 75% {
  282. top: 22px;
  283. left: -9px;
  284. }
  285. 100% {
  286. top: -7px;
  287. left: -9px;
  288. }
  289. }
  290. @keyframes vabLoading9 {
  291. 0% {
  292. box-shadow: inset 0 0 0 0 rgba($base-color-blue, 0.5);
  293. opacity: 0.5;
  294. }
  295. 100% {
  296. box-shadow: inset 0 -20px 0 0 $base-color-blue;
  297. }
  298. }
  299. /* 自定义loading结束 */