프로젝트/영화 검색 (Vue)
Vue 프로젝트 Loader
IT Blue
2021. 8. 9. 08:14
Vue 프로젝트 Loader
- 로딩 애니메이션을 하나의 컴포넌트로 만들 예정
1. /src/components/Loader.vue 생성
<template>
<div
:style="{
width: `${size}rem`,
height: `${size}rem`,
zIndex
}"
:class="{
absolute,
fixed
}"
class="spinner-border text-primary"></div>
</template>
<script>
export default {
props: {
size: {
type: Number,
default: 2
},
absolute: {
type: Boolean,
default: false
},
fixed: {
type: Boolean,
default: false
},
zIndex: {
type: Number,
default: 0
}
}
}
</script>
<style lang="scss" scoped>
.spinner-border {
margin: auto;
top: 0;
bottom: 0;
left: 0;
right: 0;
&.absolute {
position: absolute;
}
&.fixed {
position: fixed;
}
}
</style>
2. /src/components/MovieList.vue 수정
- <div v-if="loading" class="spinner-border text-primary"></div> 삭제
- Loader 컴포넌트로 대체
<template>
<div class="container">
<div
:class="{ 'no-result': !movies.length }"
class="inner">
<Loader v-if="loading" />
... 생략
<script>
import MovieItem from '~/components/MovieItem'
import Loader from '~/components/Loader'
export default {
components: {
MovieItem,
Loader
},
...
3. /src/components/Movie.vue 수정
- 스켈레톤 UI에 로딩 애니메이션 추가
<template>
<div class="container">
<div class="skeletons">
...
</div>
<Loader
:size="3"
:z-index="9"
fixed />
</div>
</template>
<script>
import Loader from '~/components/Loader'
export default {
components: {
Loader
},
...
}
</script>
...