|
<script setup></script> |
|
|
|
<template> |
|
<div class="dropzone"> |
|
<div class="loading-animation"> |
|
<div class="dot"></div> |
|
<div class="dot"></div> |
|
<div class="dot"></div> |
|
</div> |
|
|
|
Processing ... |
|
</div> |
|
</template> |
|
|
|
<style lang="scss" scoped> |
|
.dropzone { |
|
display: flex; |
|
flex-direction: column; |
|
justify-content: center; |
|
align-items: center; |
|
border: 0.2rem dashed var(--primary-color); |
|
padding: 2rem; |
|
border-radius: 0.25rem; |
|
background-color: #fff; |
|
font-size: 1.25rem; |
|
transition: 0.25s background-color ease-in-out; |
|
cursor: pointer; |
|
|
|
&-icon { |
|
display: block; |
|
font-size: 3rem; |
|
margin: 0 auto 1.5rem; |
|
color: var(--primary-color); |
|
} |
|
|
|
&-input { |
|
display: none; |
|
} |
|
} |
|
|
|
.loading-animation { |
|
display: flex; |
|
gap: 1rem; |
|
margin-bottom: 2rem; |
|
|
|
.dot { |
|
display: inline-block; |
|
width: 20px; |
|
aspect-ratio: 1 / 1; |
|
border-radius: 100%; |
|
background-color: var(--primary-color); |
|
} |
|
} |
|
|
|
.loading-animation .dot:nth-last-child(1) { |
|
animation: loading 0.6s 0.1s linear infinite; |
|
} |
|
.loading-animation .dot:nth-last-child(2) { |
|
animation: loading 0.6s 0.2s linear infinite; |
|
} |
|
.loading-animation .dot:nth-last-child(3) { |
|
animation: loading 0.6s 0.3s linear infinite; |
|
} |
|
|
|
@keyframes loading { |
|
0% { |
|
transform: translate(0, 0); |
|
} |
|
50% { |
|
transform: translate(0, 15px); |
|
} |
|
100% { |
|
transform: translate(0, 0); |
|
} |
|
} |
|
</style> |
|
|