当前位置: 首页 > news >正文

Vue3吸顶导航的实现

吸顶导航实现

【实现目标】:

在Layout页面中,浏览器上下滚动时,距离顶部距离大于80px吸顶导航显示,小于则隐藏。

【实现过程】:

  • 通过layout接口获取分类列表内容并使用categorystore进行状态管理,获取到内容进行页面渲染。

  • 在外层包裹stick,内层放置RouterLink渲染导航跳转,使用v-on的类名增强控制 stick的show属性

  • 安装VueUse,参考官方手册:VueUse,导入useScroll函数,此处只用获取窗口的y坐标,来控制show属性是否生效

  • 更改stick的样式,状态一:向上平移+完全透明;状态二:show属性生效时,移除平移+完全不透明

  • 此处增加了一个插值表达式 {{y}}来监视目前y坐标值

在这里插入图片描述

<script setup>
// 获取滚动距离
import { useScroll } from '@vueuse/core'
const { y } = useScroll(window)import { useCategoryStore } from '@/stores/categoryStore'
const categoryStore = useCategoryStore()
</script><template><div class="app-header-sticky" :class="{ show: y > 80 }"><div class="container"><RouterLink class="logo" to="/" />{{ y }}<!-- 导航区域 --><ul class="app-header-nav"><li class="home"><RouterLink to="/">首页</RouterLink></li><li class="home" v-for="item in categoryStore.categoryList" :key="item.id"><RouterLink active-class="active" :to="`/category/${item.id}`">{{item.name}}</RouterLink></li></ul></div></div>
</template><style scoped lang="scss">
.app-header-sticky {width: 100%;height: 80px;position: fixed;left: 0;top: 0;z-index: 999;background-color: #fff;border-bottom: 1px solid #e4e4e4;// 关键样式// 状态一:往上平移自身高度 + 完全透明transform: translateY(-100%);opacity: 0;// 状态二:移除平移 + 完全不透明&.show {transition: all 0.3s linear;transform: none;opacity: 1;}.container {display: flex;align-items: center;}.logo {width: 200px;height: 80px;background: url('@/assets/images/logo.png') no-repeat right 2px;background-size: 160px auto;}
}.app-header-nav {width: 820px;display: flex;padding-left: 40px;position: relative;z-index: 998;li {margin-right: 40px;width: 38px;text-align: center;a {font-size: 16px;line-height: 32px;height: 32px;display: inline-block;&:hover {color: pink;border-bottom: 1px solid pink;}}.active {color: pink;border-bottom: 1px solid $Color;}}
}
</style>
http://www.xdnf.cn/news/446167.html

相关文章:

  • Jmeter变量传递介绍
  • JavaScript 中级进阶技巧之map函数
  • 哈希表的实现01
  • java每日精进 5.14【参数校验】
  • qml中定时器的用法
  • 操作系统期末复习笔记
  • WHAT - 前端开发滚动场景API罗列
  • Web UI测试效率低?来试Parasoft Selenic的智能修复与分析!
  • 从 “学会学习” 到高效适应:元学习技术深度解析与应用实践
  • 常见 RPC 协议类别对比
  • 《Effective Python》第2章 字符串和切片操作——深入理解 Python 中 __repr__ 与 __str__
  • 行业趋势与技术创新:驾驭工业元宇宙与绿色智能制造
  • 【氮化镓】AlGaN合金中成分相关的辐射响应
  • 最短路和拓扑排序知识点
  • 各省网上零售额数据(2015-2022年)-社科数据
  • C++之fmt库介绍和使用(1)
  • TCP/IP-——C++编程详解
  • 【windows server脚本每天从网络盘复制到本地】
  • C 语言学习笔记(8)
  • 【3Ds Max】.ive格式文件的导出与加载
  • Oracle数据库中,WITH..AS 子句用法解析
  • 解读红黑树:揭晓高效数据结构的核心引擎
  • 精益数据分析(58/126):移情阶段的深度实践与客户访谈方法论
  • 全面解析 Server-Sent Events(SSE)协议:从大模型流式输出到实时通信场景
  • Spring MVC数据绑定和响应 你了解多少?
  • 如何下载和安装 Ghost Spectre Windows 11 24H2 PRO
  • 102. 二叉树的层序遍历递归法:深度优先搜索的巧妙应用
  • 软件设计师考试《综合知识》计算机编码考点分析
  • [Linux] vim及gcc工具
  • Spring中的循环引用