Skip to content
This repository was archived by the owner on Jun 24, 2021. It is now read-only.

Commit ed5fd64

Browse files
enhance carousel loading performance
1 parent a41473c commit ed5fd64

8 files changed

Lines changed: 113 additions & 76 deletions

File tree

package-lock.json

Lines changed: 39 additions & 52 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@
3333
"firebase": "^8.2.1",
3434
"lint-staged": "^10.5.3",
3535
"lozad": "^1.16.0",
36-
"postcss": "^8.2.2",
36+
"postcss": "^8.2.3",
3737
"postcss-loader": "^4.1.0",
3838
"prerender-spa-plugin": "^3.4.0",
39-
"sass": "^1.32.0",
39+
"sass": "^1.32.2",
4040
"sass-loader": "^10.1.0",
4141
"svg-sprite-loader": "^5.2.1",
4242
"typescript": "^4.1.3"

src/components/Carousel.vue

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
</ol>
88
<div class="carousel-inner rounded-3">
99
<div v-for="(url, k) in imageList" :key="k" class="carousel-item">
10-
<LazyImg :d-src="url" class="carousel-img d-block w-auto mw-100 mx-auto rounded-3"/>
10+
<LazyImg :d-src="url" :force-load="forceLoad[k]" class="carousel-img d-block w-auto mw-100 mx-auto rounded-3"/>
1111
</div>
1212
</div>
1313

@@ -32,6 +32,7 @@ export default defineComponent({
3232
setup() {
3333
const data = reactive({
3434
imageList: [] as Array<string>,
35+
forceLoad: [] as Array<boolean>,
3536
carouseControllerConfig: [
3637
{
3738
text: 'Previous',
@@ -61,6 +62,11 @@ export default defineComponent({
6162
carouselIndicators[0].classList.add('active')
6263
}
6364
})
65+
66+
for (let i = 0; i < data.imageList.length; i++) {
67+
data.forceLoad[i] = true
68+
await new Promise<void>(resolve => setTimeout(() => resolve(), 300))
69+
}
6470
})
6571
6672
return {

src/components/CircleProgress.vue

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<template>
2-
<span class="position-absolute middle" style="z-index: 10000">
2+
<span class="position-absolute middle z">
33
<progress class="pure-material-progress-circular"/>
44
</span>
5-
<p class="position-absolute middle middle__text">{{ msg }}</p>
5+
<p class="position-absolute middle middle__text text-center">{{ msg }}</p>
66
</template>
77

88
<script lang="ts">
@@ -32,6 +32,10 @@ export default defineComponent({
3232
}
3333
}
3434
35+
.z {
36+
z-index: 100000000;
37+
}
38+
3539
.pure-material-progress-circular {
3640
-webkit-appearance: none;
3741
-moz-appearance: none;

src/components/Header.vue

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,29 @@
11
<template>
2-
<header class="my-3 bg-secondary mx-4 h-25 rounded-3"
3-
style='background-image: url("https://i.imgur.com/2YhIVkZ.webp");
4-
background-size: cover;
2+
<header ref="header"
3+
class="lozad my-3 bg-secondary mx-4 h-25 rounded-3"
4+
data-background-image="https://i.imgur.com/2YhIVkZ.webp"
5+
style='background-size: cover;
56
background-position: center;'>
67
</header>
78
</template>
89

910
<script lang="ts">
10-
import {defineComponent} from 'vue';
11+
import {defineComponent, onMounted, ref} from 'vue';
12+
import lozad from 'lozad'
1113
1214
export default defineComponent({
1315
name: 'Header',
1416
setup() {
15-
return
17+
const header = ref({} as HTMLHeadElement)
18+
19+
onMounted(() => {
20+
const observer = lozad(header.value);
21+
observer.observe();
22+
})
23+
24+
return {
25+
header
26+
}
1627
}
1728
});
1829
</script>

0 commit comments

Comments
 (0)