You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1390 lines
31 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="t-content" catchtouchmove
:style="{ 'background-color': transparent === true ? 'rgba(255,255,255,0.4)' : 'rgba(255,255,255,1)' }">
<!-- NO BORDER SPINNER -->
<view class="t-wrap" v-if="type == 'nb-spinner'">
<view class="nb-spinner" :style="{ 'border-top-color': color ? color : '#07c160' }"></view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}</view>
</view>
<!-- BORDER TOP SPINNER -->
<view class="t-wrap" v-if="type == 'bt-spinner'">
<view class="bt-spinner" :style="{ 'border-top-color': color ? color : '#07c160' }"></view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}</view>
</view>
<!-- DOUBLE BORDER SPINNER -->
<view class="t-wrap" v-if="type == 'db-spinner'">
<view class="db-spinner"
:style="{ 'border-top-color': color ? color : '#07c160', 'border-bottom-color': color ? color : '#07c160' }">
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}</view>
</view>
<!-- DOUBLE SPINNERS -->
<view class="t-wrap" v-if="type == 'dbl-spinner'">
<view class="dbl-spinner"></view>
<view class="dbl-spinner dbl-spinner--2"
:style="{ 'border-right-color': color ? color : '#07c160', 'border-bottom-color': color ? color : '#07c160' }">
</view>
<view v-if="tip" class="t-tip" :style="{ color: tipColor ? tipColor : '#333333', 'margin-top': '130px' }">{{ tip }}
</view>
</view>
<!-- REVERSE SPINNER -->
<view class="t-wrap" v-if="type == 'reverse-spinner'">
<view class="reverse-spinner"
:style="{ 'border-top-color': color ? color : '#07c160', 'border-left-color': color ? color : '#07c160' }">
<view class="reverse-before"
:style="{ 'border-top-color': color ? color : '#07c160', 'border-left-color': color ? color : '#07c160' }">
</view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}</view>
</view>
<!-- HM SPINNER -->
<view class="t-wrap" v-if="type == 'hm-spinner'">
<view class="hm-spinner"
:style="{ 'border-top-color': color ? color : '#07c160', 'border-bottom-color': color ? color : '#07c160' }">
<view class="hm-spinner-before"
:style="{ 'border-top-color': color ? color : '#07c160', 'border-bottom-color': color ? color : '#07c160' }">
</view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}</view>
</view>
<!-- TRIPLE SPINNER -->
<view class="t-wrap" v-if="type == 'triple-spinner'">
<view class="triple-spinner" :style="{ 'border-top-color': color ? color : '#07c160' }">
<view class="triple-spinner-before" :style="{ 'border-top-color': color ? color : '#07c160', opacity: 0.8 }">
</view>
<view class="triple-spinner-after" :style="{ 'border-top-color': color ? color : '#07c160', opacity: 0.6 }">
</view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}
</view>
</view>
<!-- CM SPINNER -->
<view class="t-wrap" v-if="type == 'cm-spinner'">
<view class="cm-spinner" :style="{ 'border-top-color': color ? color : '#07c160' }">
<view class="cm-spinner-before" :style="{ 'border-top-color': color ? color : '#07c160', opacity: 0.8 }"></view>
<view class="cm-spinner-after" :style="{ 'border-top-color': color ? color : '#07c160', opacity: 0.6 }"></view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}
</view>
</view>
<!-- MUTLI SPINNER -->
<view class="t-wrap" v-if="type == 'multi-spinner'">
<view class="multi-spinner-container">
<view class="multi-spinner" :style="{ 'border-top-color': color ? color : '#07c160' }">
<view class="multi-spinner" :style="{ 'border-top-color': color ? color : '#07c160' }">
<view class="multi-spinner" :style="{ 'border-top-color': color ? color : '#07c160' }">
<view class="multi-spinner" :style="{ 'border-top-color': color ? color : '#07c160' }">
<view class="multi-spinner" :style="{ 'border-top-color': color ? color : '#07c160' }">
<view class="multi-spinner" :style="{ 'border-top-color': color ? color : '#07c160' }">
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}
</view>
</view>
<!-- 3 DOT LOADER -->
<view class="t-wrap" v-if="type == 'dot-loader'">
<view class="t-flex-row">
<view class="dot-loader" :style="[colorStyle]"></view>
<view class="dot-loader dot-loader--2" :style="[colorStyle]"></view>
<view class="dot-loader dot-loader--3" :style="[colorStyle]"></view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}
</view>
</view>
<!-- MESH LOADER -->
<view class="t-wrap" v-if="type == 'mesh-loader'">
<view class="mesh-loader" :style="[colorStyle]">
<view class="set-one">
<view class="circle" :style="[colorStyle]"></view>
<view class="circle" :style="[colorStyle]"></view>
</view>
<view class="set-two">
<view class="circle" :style="[colorStyle]"></view>
<view class="circle" :style="[colorStyle]"></view>
</view>
</view>
<view v-if="tip" class="t-tip" :style="{ color: tipColor ? tipColor : '#333333', 'margin-top': '70rpx' }">{{ tip }}
</view>
</view>
<!-- HEART LOADER -->
<view class="t-wrap" v-if="type == 'heart-loader'">
<view class="heart-loader" :style="[colorStyle]">
<view class="heart-loader-before" :style="[colorStyle]"></view>
<view class="heart-loader-after" :style="[colorStyle]"></view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}
</view>
</view>
<!-- SS LOADER -->
<view class="t-wrap" v-if="type == 'ss-loader'">
<view class="ss-loader">
<view :style="[colorStyle]"></view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}
</view>
</view>
<!-- LS LOADER -->
<view class="t-wrap" v-if="type == 'ls-loader'">
<view class="ls-loader">
<view :style="[colorStyle]"></view>
<view :style="[colorStyle]"></view>
<view :style="[colorStyle]"></view>
<view :style="[colorStyle]"></view>
<view :style="[colorStyle]"></view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}
</view>
</view>
<!-- BSM LOADER -->
<view class="t-wrap" v-if="type == 'bsm-loader'">
<view class="bsm-loader">
<view :style="[colorStyle]"></view>
<view :style="[colorStyle]"></view>
<view :style="[colorStyle]"></view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle, { 'margin-top': '60rpx' }]">{{ tip }}
</view>
</view>
<!-- BSRM LOADER -->
<view class="t-wrap" v-if="type == 'bsrm-loader'">
<view class="bsrm-loader">
<view :style="{ 'border-color': color ? color : '#07c160' }"></view>
<view :style="{ 'border-color': color ? color : '#07c160' }"></view>
<view :style="{ 'border-color': color ? color : '#07c160' }"></view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle, { 'margin-top': '60rpx' }]">{{ tip }}
</view>
</view>
<!-- PACMAN LOADER -->
<view class="t-wrap" v-if="type == 'pacman-loader'">
<view class="pacman-loader">
<view :style="{ 'border-color': color ? color : '#07c160', 'border-right-color': 'transparent' }"></view>
<view :style="{ 'border-color': color ? color : '#07c160', 'border-right-color': 'transparent' }"></view>
<view :style="{ 'background-color': color ? color : '#07c160' }"></view>
<view :style="{ 'background-color': color ? color : '#07c160' }"></view>
<view :style="{ 'background-color': color ? color : '#07c160' }"></view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle, { 'margin-top': '40rpx' }]">{{ tip }}
</view>
</view>
<!-- BPS LOADER -->
<view class="t-wrap" v-if="type == 'bps-loader'">
<view class="bps-loader">
<view :style="{ 'background-color': color ? color : '#07c160' }"></view>
<view :style="{ 'background-color': color ? color : '#07c160' }"></view>
<view :style="{ 'background-color': color ? color : '#07c160' }"></view>
</view>
<view v-if="tip" class="t-tip" :style="[tipStyle, { 'margin-top': '40rpx' }]">{{ tip }}
</view>
</view>
<!-- DEFAULT -->
<view class="t-wrap" v-else>
<view class="nb-spinner" :style="{ 'border-top-color': color ? color : '#07c160' }"></view>
<view v-if="tip" class="t-tip" :style="[tipStyle]">{{ tip }}</view>
</view>
</view>
</template>
<script>
export default {
name: "kevy-loading",
props: {
/**
* 类型
*/
type: {
type: String,
default: 'nb-spinner'
},
/**
* 颜色支持css颜色值
*/
color: {
type: String,
default: '#07c160'
},
/**
* 文字提示
*/
tip: {
type: String,
default: ''
},
/**
* 文字提示颜色
*/
tipColor: {
type: String,
default: '#333333'
},
/**
* 是否透明
*/
transparent: {
type: Boolean,
default: false
},
},
data() {
return {
};
},
computed: {
colorStyle: function () {
return {
'background-color': this.color ? this.color : '#07c160'
};
},
tipStyle: function () {
return {
color: this.tipColor ? this.tipColor : '#333333'
};
},
}
}
</script>
<style lang="scss" scoped>
.t-content {
position: absolute;
z-index: 999999;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.t-flex-row {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.t-wrap {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.t-tip {
font-size: 28rpx;
margin-top: 40rpx;
max-width: 600rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* NO BORDER SPINNER */
.nb-spinner {
width: 50px;
height: 50px;
margin: 0;
background: transparent;
border-top: 4px solid #009688;
border-right: 4px solid transparent;
border-radius: 50%;
-webkit-animation: 1s spin linear infinite;
animation: 1s spin linear infinite;
}
/* BORDER TOP SPINNER */
.bt-spinner {
width: 50px;
height: 50px;
border-radius: 50%;
background-color: transparent;
border: 4px solid #eee;
border-top-color: #009688;
-webkit-animation: 1s spin linear infinite;
animation: 1s spin linear infinite;
}
/* DOUBLE BORDER SPINNER */
.db-spinner {
width: 50px;
height: 50px;
border-radius: 50%;
background-color: transparent;
border: 4px solid #eee;
border-top-color: #009688;
border-bottom-color: #009688;
-webkit-animation: 1s spin linear infinite;
animation: 1s spin linear infinite;
}
/* DOUBLE SPINNER */
.double-spinner {
position: relative;
}
.dbl-spinner {
position: absolute;
width: 50px;
height: 50px;
border-radius: 50%;
background-color: transparent;
border: 4px solid transparent;
border-top: 4px solid #eee;
border-left: 4px solid #eee;
-webkit-animation: 2s spin linear infinite;
animation: 2s spin linear infinite;
}
.dbl-spinner--2 {
border: 4px solid transparent;
border-right: 4px solid #009688;
border-bottom: 4px solid #009688;
-webkit-animation: 1s spin linear infinite;
animation: 1s spin linear infinite;
}
/* TRIPLE SPINNER */
.triple-spinner {
display: block;
position: relative;
width: 50px;
height: 50px;
border-radius: 50%;
border: 4px solid transparent;
border-top: 4px solid #FF5722;
-webkit-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
}
.triple-spinner-before,
.triple-spinner-after {
position: absolute;
border-radius: 50%;
border: 4px solid transparent;
}
.triple-spinner-before {
top: 3px;
left: 3px;
right: 3px;
bottom: 3px;
border-top-color: #FF9800;
-webkit-animation: spin 3s linear infinite;
animation: spin 3.5s linear infinite;
}
.triple-spinner-after {
top: 10px;
left: 10px;
right: 10px;
bottom: 10px;
border-top-color: #FFC107;
-webkit-animation: spin 1.5s linear infinite;
animation: spin 1.75s linear infinite;
}
/* REVERSE SPINNER */
.reverse-spinner {
position: relative;
height: 50px;
width: 50px;
border: 4px solid transparent;
border-top-color: #1976d2;
border-left-color: #1976d2;
border-radius: 50%;
-webkit-animation: spin 1.5s linear infinite;
animation: spin 1.5s linear infinite;
}
.reverse-before {
position: absolute;
top: 8px;
left: 8px;
right: 8px;
bottom: 8px;
content: "";
border: 4px solid transparent;
border-top-color: #03a9f4;
border-left-color: #03a9f4;
border-radius: 50%;
-webkit-animation: spinBack 1s linear infinite;
animation: spinBack 1s linear infinite;
}
/* HM SPINNER */
.hm-spinner {
height: 50px;
width: 50px;
border: 5px solid transparent;
border-top-color: #9C27B0;
border-bottom-color: #9C27B0;
border-radius: 50%;
position: relative;
-webkit-animation: spin 3s linear infinite;
animation: spin 3s linear infinite;
}
.hm-spinner-before {
content: "";
position: absolute;
top: 10px;
right: 10px;
bottom: 10px;
left: 10px;
border: 5px solid transparent;
border-top-color: #BA68C8;
border-bottom-color: #BA68C8;
border-radius: 50%;
-webkit-animation: spin 1.5s linear infinite;
animation: spin 1.5s linear infinite;
}
/* CM SPINNER */
.cm-spinner {
height: 50px;
width: 50px;
border: 3px solid transparent;
border-radius: 50%;
border-top: 4px solid #f15e41;
-webkit-animation: spin 4s linear infinite;
animation: spin 4s linear infinite;
position: relative;
}
.cm-spinner-before,
.cm-spinner-after {
position: absolute;
top: 6px;
bottom: 6px;
left: 6px;
right: 6px;
border-radius: 50%;
border: 4px solid transparent;
}
.cm-spinner-before {
border-top-color: #bad375;
-webkit-animation: 3s spin linear infinite;
animation: 3s spin linear infinite;
}
.cm-spinner-after {
border-top-color: #26a9e0;
-webkit-animation: spin 1.5s linear infinite;
animation: spin 1.5s linear infinite;
}
.spinner-7 {
width: 60px;
height: 60px;
margin: 0;
background: transparent;
border-top: 4px solid #fff;
border-right: 4px solid transparent;
border-radius: 50%;
-webkit-animation: 1s spin linear infinite;
animation: 1s spinBorder linear infinite;
}
/* 3 DOT LOADER */
.dot-loader {
height: 30rpx;
width: 30rpx;
border-radius: 50%;
background-color: #f44336;
position: relative;
-webkit-animation: 1.2s grow ease-in-out infinite;
animation: 1.2s grow ease-in-out infinite;
}
.dot-loader--2 {
-webkit-animation: 1.2s grow ease-in-out infinite 0.15555s;
animation: 1.2s grow ease-in-out infinite 0.15555s;
margin: 0 10rpx;
}
.dot-loader--3 {
-webkit-animation: 1.2s grow ease-in-out infinite 0.3s;
animation: 1.2s grow ease-in-out infinite 0.3s;
}
/* CIRCLE DOT LOADER */
.circle-loader {
position: relative;
width: auto;
height: auto;
}
.circle-loader view {
height: 10px;
width: 10px;
background-color: #f44336;
border-radius: 50%;
position: absolute;
-webkit-animation: 0.8s opaque ease-in-out infinite both;
animation: 0.8s opaque ease-in-out infinite both;
}
.circle-loader>view:nth-child(1) {
top: -25px;
left: 0;
}
.circle-loader>view:nth-child(2) {
top: -17px;
left: 17px;
-webkit-animation-delay: 0.1s;
animation-delay: 0.1s;
}
.circle-loader>view:nth-child(3) {
top: 0;
left: 25px;
-webkit-animation-delay: 0.2s;
animation-delay: 0.2s;
}
.circle-loader>view:nth-child(4) {
top: 17px;
left: 17px;
-webkit-animation-delay: 0.3s;
animation-delay: 0.3s;
}
.circle-loader>view:nth-child(5) {
top: 25px;
left: 0;
-webkit-animation-delay: 0.4s;
animation-delay: 0.4s;
}
.circle-loader>view:nth-child(6) {
top: 17px;
left: -17px;
-webkit-animation-delay: 0.5s;
animation-delay: 0.5s;
}
.circle-loader>view:nth-child(7) {
top: 0;
left: -25px;
-webkit-animation-delay: 0.6s;
animation-delay: 0.6s;
}
.circle-loader>view:nth-child(8) {
top: -17px;
left: -17px;
-webkit-animation-delay: 0.7s;
animation-delay: 0.7s;
}
/* MULTI SPINNER */
.multi-spinner-container {
width: 80px;
height: 80px;
position: relative;
margin: 0px auto;
overflow: hidden;
}
.multi-spinner {
position: absolute;
width: calc(100% - 9.9px);
height: calc(100% - 9.9px);
border: 5px solid transparent;
border-top-color: #ff5722;
border-radius: 50%;
-webkit-animation: spin 5s cubic-bezier(0.17, 0.49, 0.96, 0.76) infinite;
animation: spin 5s cubic-bezier(0.17, 0.49, 0.96, 0.76) infinite;
}
/* MESH LOADER */
.mesh-loader {
// overflow: hidden;
// height: inherit;
// width: inherit;
}
.mesh-loader .circle {
width: 20rpx;
height: 20rpx;
position: absolute;
background: #f44336;
border-radius: 50%;
margin: -10rpx;
-webkit-animation: mesh 3s ease-in-out infinite -1.5s;
animation: mesh 3s ease-in-out infinite -1.5s;
}
.mesh-loader>view .circle:last-child {
-webkit-animation-delay: 0s;
animation-delay: 0s;
}
.mesh-loader>view:last-child {
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
}
/* TRIFORCE LOADER */
.triforce-container {
width: 100px;
height: 100px;
position: relative;
margin: 120px auto;
}
.triforce,
.triforce::before,
.triforce::after {
width: 0;
height: 0;
border-left: 25px solid transparent;
border-right: 25px solid transparent;
border-bottom: 50px solid #ceb502;
position: relative;
-webkit-animation: 3s triforce linear infinite 2s both;
animation: 3s triforce linear infinite 2s both;
top: 50px;
}
.triforce::before,
.triforce::after {
content: "";
position: absolute;
}
.triforce::before {
left: 25px;
top: 0;
-webkit-animation-delay: 1s;
animation-delay: 1s;
}
.triforce::after {
top: -50px;
-webkit-animation-delay: 0s;
animation-delay: 0s;
}
/* HEART LOADER */
.heart-loader {
background-color: #f44336;
width: 50rpx;
height: 50rpx;
position: relative;
-webkite-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-animation: pulsate 1s infinite;
animation: pulsate 1s infinite;
}
.heart-loader-before,
.heart-loader-after {
display: inline-block;
width: 50rpx;
height: 50rpx;
background-color: #f44336;
position: absolute;
border-radius: 50%;
}
.heart-loader-before {
top: 0px;
left: -25rpx;
}
.heart-loader-after {
top: -25rpx;
left: -0px;
}
/* SPINNER 13 */
.ml-loader {
position: relative;
width: 70px;
height: 70px;
}
.ml-loader view {
-webkit-transform-origin: 32px 32px;
-ms-transform-origin: 32px 32px;
transform-origin: 32px 32px;
-webkit-animation: 1.2s opaque ease-in-out infinite both;
animation: 1.2s opaque ease-in-out infinite both;
}
.ml-loader view::after {
content: "";
display: block;
position: absolute;
top: 0;
left: 30px;
width: 5px;
height: 18px;
border-radius: 10px;
background-color: #f44336;
}
.ml-loader view:nth-child(1) {
-webkit-transform: rotate(0);
-ms-transform: rotate(0);
transform: rotate(0);
}
.ml-loader view:nth-child(2) {
-webkit-transform: rotate(30deg);
-ms-transform: rotate(30deg);
transform: rotate(30deg);
-webkit-animation-delay: 0.1s;
animation-delay: 0.1s;
}
.ml-loader view:nth-child(3) {
-webkit-transform: rotate(60deg);
-ms-transform: rotate(60deg);
transform: rotate(60deg);
-webkit-animation-delay: 0.2s;
animation-delay: 0.2s;
}
.ml-loader view:nth-child(4) {
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
-webkit-animation-delay: 0.3s;
animation-delay: 0.3s;
}
.ml-loader view:nth-child(5) {
-webkit-transform: rotate(120deg);
-ms-transform: rotate(120deg);
transform: rotate(120deg);
-webkit-animation-delay: 0.4s;
animation-delay: 0.4s;
}
.ml-loader view:nth-child(6) {
-webkit-transform: rotate(150deg);
-ms-transform: rotate(150deg);
transform: rotate(150deg);
-webkit-animation-delay: 0.5s;
animation-delay: 0.5s;
}
.ml-loader view:nth-child(7) {
-webkit-transform: rotate(180deg);
-ms-transform: rotate(180deg);
transform: rotate(180deg);
-webkit-animation-delay: 0.6s;
animation-delay: 0.6s;
}
.ml-loader view:nth-child(8) {
-webkit-transform: rotate(210deg);
-ms-transform: rotate(210deg);
transform: rotate(210deg);
-webkit-animation-delay: 0.7s;
animation-delay: 0.7s;
}
.ml-loader view:nth-child(9) {
-webkit-transform: rotate(240deg);
-ms-transform: rotate(240deg);
transform: rotate(240deg);
-webkit-animation-delay: 0.8s;
animation-delay: 0.8s;
}
.ml-loader view:nth-child(10) {
-webkit-transform: rotate(270deg);
-ms-transform: rotate(270deg);
transform: rotate(270deg);
-webkit-animation-delay: 0.9s;
animation-delay: 0.9s;
}
.ml-loader view:nth-child(11) {
-webkit-transform: rotate(300deg);
-ms-transform: rotate(300deg);
transform: rotate(300deg);
-webkit-animation-delay: 1s;
animation-delay: 1s;
}
.ml-loader view:nth-child(12) {
-webkit-transform: rotate(330deg);
-ms-transform: rotate(330deg);
transform: rotate(330deg);
-webkit-animation-delay: 1.1s;
animation-delay: 1.1s;
}
.ml-loader view:nth-child(13) {
-webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
-webkit-animation-delay: 1.2s;
animation-delay: 1.2s;
}
@keyframes rotate {
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes spin {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes spinBack {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-720deg);
transform: rotate(-720deg);
}
}
@keyframes spinBorder {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
border-width: 15px;
}
50% {
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
border-width: 3px;
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
border-width: 15px;
}
}
@keyframes grow {
0%,
40%,
100% {
-webkit-transform: scale(0);
transform: scale(0);
}
40% {
-webkit-transform: scale(1);
transform: scale(1);
}
}
@keyframes triforce {
0% {
border-bottom-color: rgb(206, 181, 2);
}
40% {
border-bottom-color: rgba(206, 181, 2, 0);
}
80% {
border-bottom-color: rgb(206, 181, 2);
}
100% {
border-bottom-color: rgb(206, 181, 2);
}
}
@keyframes pulsate {
0% {
-webkit-transform: rotate(45deg) scale(0.8);
transform: rotate(45deg) scale(0.8);
transform: rotate(45deg) scale(0.8);
}
5% {
-webkit-transform: rotate(45deg) scale(0.9);
transform: rotate(45deg) scale(0.9);
}
10% {
-webkit-transform: rotate(45deg) scale(0.8);
transform: rotate(45deg) scale(0.8);
}
15% {
-webkit-transform: rotate(45deg) scale(1);
transform: rotate(45deg) scale(1);
}
50% {
-webkit-transform: rotate(45deg) scale(0.8);
transform: rotate(45deg) scale(0.8);
}
100% {
-webkit-transform: rotate(45deg) scale(0.8);
transform: rotate(45deg) scale(0.8);
}
}
@keyframes opaque {
0% {
opacity: 0.1;
}
40% {
opacity: 1;
}
80% {
opacity: 0.1;
}
100% {
opacity: 0.1;
}
}
@keyframes mesh {
0% {
-webkit-transform-origin: 50% -100%;
transform-origin: 50% -100%;
-webkit-transform: rotate(0);
transform: rotate(0);
}
50% {
-webkit-transform-origin: 50% -100%;
transform-origin: 50% -100%;
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
50.1% {
-webkit-transform-origin: 50% 200%;
transform-origin: 50% 200%;
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform-origin: 50% 200%;
transform-origin: 50% 200%;
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
.ss-loader>view {
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
width: 60rpx;
height: 60rpx;
background: #07c160;
-webkit-animation: square-spin 3s 0s cubic-bezier(0.09, 0.57, 0.49, 0.9) infinite;
animation: square-spin 3s 0s cubic-bezier(0.09, 0.57, 0.49, 0.9) infinite;
}
/* SS SPINNER */
@keyframes square-spin {
25% {
-webkit-transform: perspective(100px) rotateX(180deg) rotateY(0);
transform: perspective(100px) rotateX(180deg) rotateY(0);
}
50% {
-webkit-transform: perspective(100px) rotateX(180deg) rotateY(180deg);
transform: perspective(100px) rotateX(180deg) rotateY(180deg);
}
75% {
-webkit-transform: perspective(100px) rotateX(0) rotateY(180deg);
transform: perspective(100px) rotateX(0) rotateY(180deg);
}
100% {
-webkit-transform: perspective(100px) rotateX(0) rotateY(0);
transform: perspective(100px) rotateX(0) rotateY(0);
}
}
/* LS SPINNER */
.ls-loader>view:nth-child(1) {
-webkit-animation: line-scale 1s -0.4s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
animation: line-scale 1s -0.4s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
}
.ls-loader>view:nth-child(2) {
-webkit-animation: line-scale 1s -0.3s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
animation: line-scale 1s -0.3s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
}
.ls-loader>view:nth-child(3) {
-webkit-animation: line-scale 1s -0.2s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
animation: line-scale 1s -0.2s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
}
.ls-loader>view:nth-child(4) {
-webkit-animation: line-scale 1s -0.1s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
animation: line-scale 1s -0.1s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
}
.ls-loader>view:nth-child(5) {
-webkit-animation: line-scale 1s 0s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
animation: line-scale 1s 0s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
}
.ls-loader>view {
background-color: #07c160;
width: 4px;
height: 35px;
border-radius: 2px;
margin: 2px;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
display: inline-block;
}
@keyframes line-scale {
0% {
-webkit-transform: scaley(1);
transform: scaley(1);
}
50% {
-webkit-transform: scaley(0.4);
transform: scaley(0.4);
}
100% {
-webkit-transform: scaley(1);
transform: scaley(1);
}
}
/* BSM SPINNER */
@keyframes ball-scale-multiple {
0% {
-webkit-transform: scale(0);
transform: scale(0);
opacity: 0;
}
5% {
opacity: 1;
}
100% {
-webkit-transform: scale(1);
transform: scale(1);
opacity: 0;
}
}
.bsm-loader {
position: relative;
-webkit-transform: translateY(-30px);
transform: translateY(-30px);
}
.bsm-loader>view:nth-child(2) {
-webkit-animation-delay: -0.4s;
animation-delay: -0.4s;
}
.bsm-loader>view:nth-child(3) {
-webkit-animation-delay: -0.2s;
animation-delay: -0.2s;
}
.bsm-loader>view {
border-radius: 100%;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
position: absolute;
left: -30px;
top: 0px;
opacity: 0;
margin: 0;
width: 60px;
height: 60px;
-webkit-animation: ball-scale-multiple 1s 0s linear infinite;
animation: ball-scale-multiple 1s 0s linear infinite;
}
/* BSRM SPINNER */
@keyframes ball-scale-ripple-multiple {
0% {
-webkit-transform: scale(0.1);
transform: scale(0.1);
opacity: 1;
}
70% {
-webkit-transform: scale(1);
transform: scale(1);
opacity: 0.7;
}
100% {
opacity: 0.0;
}
}
.bsrm-loader {
position: relative;
-webkit-transform: translateY(-25px);
transform: translateY(-25px);
}
.bsrm-loader>view:nth-child(0) {
-webkit-animation-delay: -0.8s;
animation-delay: -0.8s;
}
.bsrm-loader>view:nth-child(1) {
-webkit-animation-delay: -0.6s;
animation-delay: -0.6s;
}
.bsrm-loader>view:nth-child(2) {
-webkit-animation-delay: -0.4s;
animation-delay: -0.4s;
}
.bsrm-loader>view:nth-child(3) {
-webkit-animation-delay: -0.2s;
animation-delay: -0.2s;
}
.bsrm-loader>view {
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
position: absolute;
top: -2px;
left: -26px;
width: 50px;
height: 50px;
border-radius: 100%;
border: 2px solid #fff;
-webkit-animation: ball-scale-ripple-multiple 1.25s 0s infinite cubic-bezier(0.21, 0.53, 0.56, 0.8);
animation: ball-scale-ripple-multiple 1.25s 0s infinite cubic-bezier(0.21, 0.53, 0.56, 0.8);
}
/* PACMAN SPINNER */
@keyframes rotate_pacman_half_up {
0% {
-webkit-transform: rotate(270deg);
transform: rotate(270deg);
}
50% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
100% {
-webkit-transform: rotate(270deg);
transform: rotate(270deg);
}
}
@keyframes rotate_pacman_half_down {
0% {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
50% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
}
@keyframes pacman-balls {
75% {
opacity: 0.7;
}
100% {
-webkit-transform: translate(-100rpx, -6.25px);
transform: translate(-100rpx, -6.25px);
}
}
.pacman-loader {
position: relative;
}
.pacman-loader>view:nth-child(2) {
-webkit-animation: pacman-balls 1s -0.99s infinite linear;
animation: pacman-balls 1s -0.99s infinite linear;
}
.pacman-loader>view:nth-child(3) {
-webkit-animation: pacman-balls 1s -0.66s infinite linear;
animation: pacman-balls 1s -0.66s infinite linear;
}
.pacman-loader>view:nth-child(4) {
-webkit-animation: pacman-balls 1s -0.33s infinite linear;
animation: pacman-balls 1s -0.33s infinite linear;
}
.pacman-loader>view:nth-child(5) {
-webkit-animation: pacman-balls 1s 0s infinite linear;
animation: pacman-balls 1s 0s infinite linear;
}
.pacman-loader>view:nth-child(1) {
width: 0px;
height: 0px;
border-right: 25rpx solid transparent;
border-top: 25rpx solid #07c160;
border-left: 25rpx solid #07c160;
border-bottom: 25rpx solid #07c160;
border-radius: 25rpx;
-webkit-animation: rotate_pacman_half_up 0.5s 0s infinite;
animation: rotate_pacman_half_up 0.5s 0s infinite;
position: relative;
left: -30rpx;
}
.pacman-loader>view:nth-child(2) {
width: 0px;
height: 0px;
border-right: 25rpx solid transparent;
border-top: 25rpx solid #07c160;
border-left: 25rpx solid #07c160;
border-bottom: 25rpx solid #07c160;
border-radius: 25rpx;
-webkit-animation: rotate_pacman_half_down 0.5s 0s infinite;
animation: rotate_pacman_half_down 0.5s 0s infinite;
margin-top: -50rpx;
position: relative;
left: -30rpx;
}
.pacman-loader>view:nth-child(3),
.pacman-loader>view:nth-child(4),
.pacman-loader>view:nth-child(5),
.pacman-loader>view:nth-child(6) {
background-color: #07c160;
width: 15rpx;
height: 15rpx;
border-radius: 100%;
margin: 2rpx;
width: 10rpx;
height: 10rpx;
position: absolute;
-webkit-transform: translate(0, -6.25rpx);
transform: translate(0, -6.25rpx);
top: 25rpx;
left: 70rpx;
}
/* BPS loader */
@keyframes ball-pulse-sync {
33% {
-webkit-transform: translateY(15rpx);
transform: translateY(15rpx);
}
66% {
-webkit-transform: translateY(-15rpx);
transform: translateY(-15rpx);
}
100% {
-webkit-transform: translateY(0);
transform: translateY(0);
}
}
.bps-loader>view:nth-child(1) {
-webkit-animation: ball-pulse-sync 0.6s -0.14s infinite ease-in-out;
animation: ball-pulse-sync 0.6s -0.14s infinite ease-in-out;
}
.bps-loader>view:nth-child(2) {
-webkit-animation: ball-pulse-sync 0.6s -0.07s infinite ease-in-out;
animation: ball-pulse-sync 0.6s -0.07s infinite ease-in-out;
}
.bps-loader>view:nth-child(3) {
-webkit-animation: ball-pulse-sync 0.6s 0s infinite ease-in-out;
animation: ball-pulse-sync 0.6s 0s infinite ease-in-out;
}
.bps-loader>view {
width: 20rpx;
height: 20rpx;
border-radius: 100%;
margin: 2px;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
display: inline-block;
}
</style>