vue3实现吸顶效果
在Vue 3中,可以通过监听滚动事件和计算元素位置来实现吸顶效果。以下是一个简单的示例:
<template>
<div class="container">
<div class="header" :class="{ sticky: isSticky }">Header</div>
<div class="content">
<!-- 其他内容 -->
</div>
</div>
</template>
<script setup>
import { ref, onMounted, onUnmounted } from 'vue';
const isSticky = ref(false);
const stickyOffset = ref(0);
function handleScroll() {
if (window.pageYOffset >= stickyOffset.value) {
isSticky.value = true;
} else {
isSticky.value = false;
}
}
onMounted(() => {
// 获取吸顶元素距离顶部的偏移量
stickyOffset.value = document.querySelector('.header').offsetTop;
window.addEventListener('scroll', handleScroll);
});
onUnmounted(() => {
window.removeEventListener('scroll', handleScroll);
});
</script>
<style>
.sticky {
position: fixed;
top: 0;
width: 100%;
background-color: white;
z-index: 1000;
}
.container {
margin-top: 50px; /* 确保有足够的空间看到效果 */
}
</style>
在这个示例中,.header
是需要实现吸顶效果的元素。当用户滚动页面至 .header
元素时,.sticky
类将被添加,.header
将固定在页面顶部。stickyOffset
用于记录 .header
离文档顶部的距离,以便在滚动到达该位置时开始应用吸顶效果。在组件被卸载时,移除滚动事件监听器以防止内存泄漏。
评论已关闭