Компонент LoadingScreen.vue
может выглядеть следующим образом:
<template>
<div :class="{ loader: true, fadeout: !isLoading }">
Loading ...
</div>
</template>
<script>
export default {
name: "LoadingScreen",
props: ["isLoading"]
};
</script>
<style>
.loader {
background-color: #63ab97;
bottom: 0;
color: white;
display: block;
font-size: 32px;
left: 0;
overflow: hidden;
padding-top: 10vh;
position: fixed;
right: 0;
text-align: center;
top: 0;
}
.fadeout {
animation: fadeout 2s forwards;
}
@keyframes fadeout {
to {
opacity: 0;
visibility: hidden;
}
}
</style>
Имейте в виду, что загрузчик должен знать, выполняется ли загрузка, чтобы иметь возможность исчезнуть.Вы должны проверить это и в своем приложении, чтобы оно не показывалось, пока все еще нужно подготовить данные.В противном случае информация из части приложения в фоновом режиме может быть утечка (например, полосы прокрутки могут быть видны на экране загрузки).Так что App.vue
может иметь такой шаблон:
<template>
<div id="app">
<LoadingScreen :isLoading="isLoading" />
<div v-if="!isLoading">
...your main content here...
</div>
</div>
</template>
Если вы хотите, чтобы div-элементы LoadingScreen полностью исчезали, вам нужно управлять состоянием анимации затухания в самом App.vue
, делаяэто немного сложнее (тогда я, вероятно, использовал бы два подпорки для LoadingScreen: isLoading
и fadeout
, где fadeout
- обратный вызов, который вызывается в LoadingScreen
, как только анимация затухания завершена).
Я подготовил коды и ящик для вас с управлением состояниями внутри LoadingScreen
.