vue.js实现导航栏 随着滚动条向下消失,向上出现
实现思路:
监听window的滚动条 但发生变化执行函数, 判断lastScrollPosition是大于还是小于,等于(=)就是刚开始或回到顶部就不做判断了(~),当大于滚动条最新长度 就是向下移动 隐藏导航栏(主要是控制 top ),小于(也就是向上移动滚动条)使导航栏显示.
<template>
<nav :class="{'nav': true,'active': isActive,}" >
/*导航*/
</nav>
</template>
<script setup>
let isActive = ref(false)
let lastScrollPosition = ref(window.pageYOffset)
; (() => {
window.addEventListener('scroll', () => {
const pageY = window.pageYOffset // 滚动条距离顶部的长度
if (lastScrollPosition.value > pageY) {
isActive.value = false
} else {
isActive.value = true
}
lastScrollPosition.value = pageY
})
})()
</script>
<style scoped>
.nav {
position: fixed;
top: 0px;
left: 0;
transition: all 0.5s ease-in-out;
height: 3.5rem;
width: 100%;
background-color: rgb(31, 36, 45);
z-index: 10;
box-shadow: 5px 5px 10px 10px rgba(0, 0, 0, 0.3);
}
.nav.active {
top: -100px;
}
</style>
如果有更好的思路大佬请在下方评论区留言. 嘻嘻 ; 感觉还可以改进很多; 感谢