|
@@ -1,5 +1,12 @@
|
|
<template>
|
|
<template>
|
|
<div class="comp-root">
|
|
<div class="comp-root">
|
|
|
|
+ <video
|
|
|
|
+ class="bg-video"
|
|
|
|
+ src="@/assets/videos/loading.mp4"
|
|
|
|
+ autoplay
|
|
|
|
+ playsinline
|
|
|
|
+ muted
|
|
|
|
+ />
|
|
<div class="progress">
|
|
<div class="progress">
|
|
<span>{{ progress }}</span><span>%</span>
|
|
<span>{{ progress }}</span><span>%</span>
|
|
</div>
|
|
</div>
|
|
@@ -11,11 +18,25 @@
|
|
|
|
|
|
<script>
|
|
<script>
|
|
export default {
|
|
export default {
|
|
|
|
+ emits: ['loading-end'],
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
progress: 0,
|
|
progress: 0,
|
|
|
|
+ intervalId: null,
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ mounted() {
|
|
|
|
+ this.intervalId = setInterval(() => {
|
|
|
|
+ if (this.progress < 100) {
|
|
|
|
+ this.progress++
|
|
|
|
+ } else {
|
|
|
|
+ clearInterval(this.intervalId)
|
|
|
|
+ this.$emit('loading-end')
|
|
|
|
+ }
|
|
|
|
+ }, 20)
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ }
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|
|
|
|
|
|
@@ -27,10 +48,18 @@ export default {
|
|
width: 100%;
|
|
width: 100%;
|
|
height: 100%;
|
|
height: 100%;
|
|
background-color: red;
|
|
background-color: red;
|
|
|
|
+ >.bg-video {
|
|
|
|
+ position: absolute;
|
|
|
|
+ left: 0;
|
|
|
|
+ top: 0;
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 100%;
|
|
|
|
+ object-fit: cover;
|
|
|
|
+ }
|
|
>.progress {
|
|
>.progress {
|
|
position: absolute;
|
|
position: absolute;
|
|
left: 50%;
|
|
left: 50%;
|
|
- top: 40%;
|
|
|
|
|
|
+ top: 50%;
|
|
transform: translate(-50%, -50%);
|
|
transform: translate(-50%, -50%);
|
|
>span:nth-of-type(1) {
|
|
>span:nth-of-type(1) {
|
|
font-size: 32px;
|
|
font-size: 32px;
|