Skip to content

Commit 7eda94f

Browse files
docs: refactor the effect on the sponsors and fix a position caching bug (#815)
1 parent 8072034 commit 7eda94f

File tree

1 file changed

+15
-24
lines changed

1 file changed

+15
-24
lines changed

src/.vuepress/theme/components/Home.vue

+15-24
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
<Content class="theme-default-content custom" />
4141

42-
<section class="section-sponsors" ref="sponsors">
42+
<section class="section-sponsors" :class="{ active: sponsorsActive }" ref="sponsors">
4343
<div class="inner">
4444
<PatreonSponsors :sponsors="sponsors" />
4545
<OpenCollectiveSponsors />
@@ -85,7 +85,8 @@ export default {
8585
},
8686
8787
data: () => ({
88-
sponsors
88+
sponsors,
89+
sponsorsActive: false
8990
}),
9091
9192
computed: {
@@ -103,29 +104,19 @@ export default {
103104
},
104105
105106
mounted() {
106-
if (!window) {
107-
return
108-
}
107+
window.addEventListener('scroll', this.onPageScroll)
108+
},
109109
110-
const sponsors = this.$refs.sponsors
111-
let sponsorTop = sponsors.offsetTop
112-
let sponsorActive = false
113-
114-
window.addEventListener('resize', () => (sponsorTop = sponsors.offsetTop))
115-
116-
window.addEventListener('scroll', () => {
117-
if (window.pageYOffset > sponsorTop - 100) {
118-
if (!sponsorActive) {
119-
sponsorActive = true
120-
sponsors.classList.add('active')
121-
}
122-
} else {
123-
if (sponsorActive) {
124-
sponsorActive = false
125-
sponsors.classList.remove('active')
126-
}
127-
}
128-
})
110+
beforeDestroy() {
111+
window.removeEventListener('scroll', this.onPageScroll)
112+
},
113+
114+
methods: {
115+
onPageScroll() {
116+
const sponsorTop = this.$refs.sponsors.offsetTop
117+
118+
this.sponsorsActive = window.pageYOffset > sponsorTop - 100
119+
}
129120
}
130121
}
131122
</script>

0 commit comments

Comments
 (0)