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

uniapp滚动导航 - unique

下面是效果图

QQ2025108-134329

下面是实现代码

<template><view class="container"><!-- 顶部导航 --><view class="navbar"><viewv-for="(item, index) in navList":key="index"class="nav-item":class="{ active: currentIndex === index }"@tap="scrollTo(index)">{{ item.title }}</view></view><!-- 内容区 --><scroll-viewclass="scroll-content"scroll-yscroll-with-animation:scroll-into-view="scrollId"@scroll="onScroll"><view v-for="(item, index) in navList" :key="index" class="section" :id="'sec' + index"><view class="section-title">{{ item.title }}</view><view class="section-content">{{ item.content }}</view></view></scroll-view></view>
</template><script setup>
import { ref, onMounted } from 'vue'const navList = ref([{ title: '首页', content: '这里是首页内容' },{ title: '功能', content: '这里是功能介绍内容' },{ title: '关于', content: '这里是关于我们内容' },
])const currentIndex = ref(0)
const scrollId = ref('')
const sectionTops = ref([])// 点击导航滚动
function scrollTo(index) {scrollId.value = 'sec' + indexcurrentIndex.value = index
}// 监听滚动事件,高亮当前section
function onScroll(e) {const scrollTop = e.detail.scrollTopfor (let i = 0; i < sectionTops.value.length; i++) {const top = sectionTops.value[i]const nextTop = sectionTops.value[i + 1] || Infinityif (scrollTop >= top - 60 && scrollTop < nextTop - 60) {currentIndex.value = ibreak}}
}onMounted(() => {// 获取每个section的位置
  const query = uni.createSelectorQuery().in(getCurrentInstance())query.selectAll('.section').boundingClientRect((data) => {sectionTops.value = data.map((item) => item.top)}).exec()
})
</script><style scoped>
.container {display: flex;flex-direction: column;height: 100vh;
}/* 顶部导航栏 */
.navbar {display: flex;justify-content: space-around;align-items: center;height: 50px;background-color: #fff;border-bottom: 1px solid #eee;position: sticky;top: 0;z-index: 10;
}.nav-item {color: #666;padding: 6px 10px;font-size: 14px;
}.nav-item.active {color: #fff;background-color: #409eff;border-radius: 4px;
}/* 滚动内容区域 */
.scroll-content {flex: 1;
}.section {height: 1200rpx;padding: 20rpx;box-sizing: border-box;
}.section:nth-child(odd) {background-color: #f6f6f6;
}
.section:nth-child(even) {background-color: #e8f1ff;
}.section-title {font-size: 18px;font-weight: bold;margin-bottom: 10rpx;
}
</style>

 

http://www.zskr.cn/news/17286.html

相关文章:

  • windows剪切板工具
  • 视频采集程序
  • opencv应用经典bug
  • Linux随记(十八) - 详解
  • 通信算法之281:大疆DJI无人机ID-DJI DroneID开源工程-相关问题-协议信息问题 - 实践
  • week2课后作业
  • 课后作业1
  • 大语言模型中的注意力机制详解 - 教程
  • 详细介绍:《云原生安全攻防》-- K8s网络策略:通过NetworkPolicy实现微隔离
  • 【Axure高保真原型】交通事故大屏可视化分析案例 - 指南
  • Flask中关于app.url_map属性的用法 - 详解
  • 算法设计与分析第一章作业
  • 114514
  • ZR 2025 十一集训 Day 8
  • 2025 云南旅游旅行社最新推荐排行榜:权威口碑榜单助你避开消费陷阱选靠谱服务商
  • DeepSeek+SpringAI完成流式对话
  • 2025 年冷水机厂家最新推荐排行榜:聚焦实力企业,解读技术服务优势与选购指南防爆/低温/水冷/螺杆/超低温冷水机厂家推荐
  • 2025 地坪研磨机厂家最新推荐榜单:盘点国产优质品牌核心优势及格力 / 宁德时代合作案例 固化剂/水磨石/遥控式/座驾式/小型/大型地坪研磨机厂家推荐
  • windows设置 exe 文件开机启动
  • 2025 年宠物托运服务最新推荐榜单:覆盖深港澳 / 高铁托运等场景,爱宠国际领衔优质公司港深宠物托运/珠澳宠物托运公司推荐
  • 2025 年豆腐机厂家最新推荐榜:权威解析企业实力,豆腐豆皮 / 豆干 / 成型设备选购指南厂家推荐
  • set查找和统计示例
  • Allegro 输出生产信息详解
  • 编程笔记 - C++ 完美转发
  • mysql复杂查询50题mysql面试题
  • Tailwind UnoCSS CSS框架选型
  • 2025 年电力金具厂家最新推荐排行榜:覆盖出口 / 玛钢 / 联板 / 横担 / 抱箍 / 线夹等品类,为采购提供权威参考
  • 编程笔记 - C++ 移动语义
  • 2025 年最新推荐压电陶瓷制造厂家:深度解析品牌价值、市场影响力及高性价比选型指南高D33/pzt/高性能/替代进口/高稳定性压电陶瓷厂家推荐
  • 对vue的疑惑