47 lines
810 B
Vue
47 lines
810 B
Vue
|
<template>
|
||
|
<span :class="{ loading: !text }">{{ text }}<span /><span /><span /></span>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
export default {
|
||
|
props: {
|
||
|
text: String,
|
||
|
},
|
||
|
};
|
||
|
</script>
|
||
|
|
||
|
<style scoped>
|
||
|
span.loading > span {
|
||
|
display: inline-block;
|
||
|
background: #000;
|
||
|
border-radius: 0.09375em;
|
||
|
width: 0.1875em;
|
||
|
height: 0.1875em;
|
||
|
margin: 0.25em 0.075em;
|
||
|
opacity: 0.5;
|
||
|
}
|
||
|
span.loading > span:nth-child(1) {
|
||
|
animation: fade 1s ease 0s infinite;
|
||
|
}
|
||
|
span.loading > span:nth-child(2) {
|
||
|
animation: fade 1s ease 0.333s infinite;
|
||
|
}
|
||
|
span.loading > span:nth-child(3) {
|
||
|
animation: fade 1s ease 0.666s infinite;
|
||
|
}
|
||
|
@keyframes fade {
|
||
|
0% {
|
||
|
opacity: 1;
|
||
|
}
|
||
|
33.3% {
|
||
|
opacity: 0.25;
|
||
|
}
|
||
|
66.6% {
|
||
|
opacity: 0.25;
|
||
|
}
|
||
|
100% {
|
||
|
opacity: 1;
|
||
|
}
|
||
|
}
|
||
|
</style>
|