uniapp中页面滚动锚点位置及滚动到对应高度显示对应按钮

在这里插入图片描述
在这里插入图片描述

可以把页面代码和组件代码放自己项目里跑一下

页面代码

<template><view class="Tracing-detail"><view class="title" v-for="i in 30">顶部信息</view><!-- tab按钮 --><Tab v-model="activeIndex" @change="scrollToTarget"></Tab><!-- 产品详情 --><view class="cpxq" id="cpxq"><view class="title" v-for="i in 30">产品详情</view></view><!-- 流程溯源 --><view class="lcsy" id="lcsy"><view class="title" v-for="i in 30">流程溯源</view></view><!-- 主体信息 --><view class="ztxx" id="ztxx"><view class="title" v-for="i in 30">主体信息</view></view><!-- 优品推荐 --><view class="yptj" id="yptj"><view class="title" v-for="i in 30">优品推荐</view></view></view>
</template><script>import variables from 'uni.scss';import Tab from './components/Tab.vue';import Certificate from './components/Certificate.vue'import Flow from './components/Flow.vue'export default {components:{Tab,Certificate,Flow},data(){return {cpxqTop:0,lcsyTop:0,ztxxTop:0,yptjTop:0,activeIndex:1}},mounted() {this.init()},onPageScroll(e) {// e.scrollTop 是页面在垂直方向已滚动的距离(单位px)// console.log(e.scrollTop);if(e.scrollTop<this.lcsyTop){if(this.activeIndex!=1) this.activeIndex = 1}else if(e.scrollTop<this.ztxxTop){if(this.activeIndex!=2) this.activeIndex = 2}else if(e.scrollTop<this.yptjTop){if(this.activeIndex!=3) this.activeIndex = 3}else if(this.activeIndex!=4){if(this.activeIndex!=4) this.activeIndex = 4}},methods:{init(){this.getTopNumber()},getTopNumber(){// 创建查询对象const query = uni.createSelectorQuery().in(this);// 选择目标元素并获取其位置信息query.select('#cpxq').boundingClientRect(data => {if (data) {console.log(data,1);this.cpxqTop = data.top-30}}); // 执行查询query.select('#lcsy').boundingClientRect(data => {if (data) {console.log(data,2);this.lcsyTop = data.top-30//30为tab的高度}}); // 执行查询query.select('#ztxx').boundingClientRect(data => {if (data) {console.log(data,3);this.ztxxTop = data.top-30}}); // 执行查询query.select('#yptj').boundingClientRect(data => {if (data) {console.log(data,4);this.yptjTop = data.top-30}}).exec(); // 执行查询},scrollToTarget(i) {console.log(i);let number = ''if(i==1){number = this.cpxqTop}else if(i==2){number = this.lcsyTop}else if(i==3){number = this.ztxxTop}else if(i==4){number = this.yptjTop}uni.pageScrollTo({scrollTop: number, // pageScrollTop为页面当前已滚动的距离duration: 300 // 滚动动画时长});}}}
</script><style scoped lang="scss">.title{text-align: center;}
</style>

吸顶按钮组件代码

<template><view class="tab-list"><view :class="item.index==value?'tab-active': 'tab'" v-for="(item,index) in list"@click="btnClick(item.index)">{{item.name}}</view></view>
</template><script>export default {props:{value:{typeof:Number,default:1}},data(){return{list:[{index:1,name:'产品详情'},{index:2,name:'流程溯源'},{index:3,name:'主体信息'},{index:4,name:'优品推荐'}]}},methods:{btnClick(i){this.$emit("input", i)this.$emit("change", i)}}}
</script><style scoped lang="scss">.tab-list{position: sticky;top: 0;z-index: 999;margin: 0 31rpx;height: 79rpx;padding: 0 17rpx;display: flex;justify-content: space-between;align-items: center;background-color: red;background-size: 100% 100%;.tab-active {position: relative;height: 44rpx;font-family: YouSheBiaoTiHei;font-size: 35rpx;color: #FEE858;line-height: 44rpx;text-align: center;font-style: normal;}.tab {position: relative;height: 44rpx;font-family: YouSheBiaoTiHei;font-size: 35rpx;color: #FFFFFF;line-height: 44rpx;text-align: center;font-style: normal;}}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/304422.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云手机解决海外社媒运营的诸多挑战

随着海外社交媒体运营的兴起&#xff0c;如何有效管理多个账户成为了一项挑战。云手机作为一种新兴的解决方案&#xff0c;为海外社媒运营带来了前所未有的便利。 云手机的基本原理是基于云计算和虚拟化技术&#xff0c;允许用户在物理手机之外创建和使用多个虚拟手机。这种创新…

Node.js 的 5 个常见服务器漏洞

Node.js 是一个强大且广泛使用的 JavaScript 运行时环境&#xff0c;用于构建服务器端应用程序。然而&#xff0c;与任何其他软件一样&#xff0c;Node.js 也有自己的一些漏洞&#xff0c;如果处理不当&#xff0c;可能会导致安全问题。请注意&#xff0c;这些漏洞并不是 Node.…

嵌入式面向对象学习 RT-Thread I/O 设备管理框架 设备驱动层 案例测试

嵌入式面向对象 RT-Thread I/O 设备管理框架 设备驱动层 注&#xff1a;本文介绍性内容转载于《RT-Thread记录&#xff08;十、全面认识 RT-Thread I/O 设备模型&#xff09;》 注&#xff1a; 本次使用的开发板 &#xff1a; ​ 兆易创新GD32F407VET6开发板 ​ 雅特力科技…

nginx配置证书和私钥进行SSL通信验证

文章目录 一、背景1.1 秘钥和证书是两个东西吗&#xff1f;1.2 介绍下nginx配置文件中参数ssl_certificate和ssl_certificate_key1.3介绍下nginx支持的证书类型1.4 目前nginx支持哪种证书格式&#xff1f;1.5 nginx修改配置文件目前方式也会有所不同1.6 介绍下不通格式的证书哪…

微服务-4 Nacos

目录 一、注册中心 二、配置管理 1. 添加配置 2. 配置自动刷新 3. 多环境配置共享​编辑 一、注册中心 服务列表&#xff1a; 服务详情&#xff1a; 二、配置管理 1. 添加配置 (1). 在 nacos 界面中添加配置文件&#xff1a; 配置列表&#xff1a; 配置详情&#xff1a;…

Qt之QSS样式表

QSS简介 QSS&#xff08;Qt Style Sheet&#xff09;样式表是一种用于描述图形用户界面&#xff08;GUI&#xff09;样式的语言。它允许开发者为应用程序的控件定义视觉外观&#xff0c;例如颜色、字体、尺寸和布局等。 QSS 样式表的主要目的是提供一种简洁而灵活的方式来美化…

【优选算法专栏】专题四:前缀和(一)

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…

DRF 常用功能

文章目录 一、主流认证方式Session认证Token认证JWT认证 二、DRF认证与权限Session认证所有视图&#xff08;全局&#xff09;启用认证视图级别启用认证 Token认证[推荐]安装APP启用Token认证生成数据库表(因为token要存储到数据库&#xff09;配置Token认证接口URL获取token使…

迭代器模式【行为模式C++】

1.简介 迭代器模式是一种行为设计模式&#xff0c; 让你能在不暴露集合&#xff08;聚合对象&#xff09;底层表现形式 &#xff08;列表、 栈和树等&#xff09; 的情况下遍历集合&#xff08;聚合对象&#xff09;中所有的元素。 迭代器的意义就是将这个行为抽离封装起来&a…

STM32F4 IAP跳转APP问题及STM32基于Ymodem协议IAP升级笔记

STM32F4 IAP 跳转 APP问题 ST官网IAP例程Chapter1 STM32F4 IAP 跳转 APP问题1. 概念2. 程序2.1 Bootloader 程序 问题现象2.2. APP程序 3. 代码4. 其他问题 Chapter2 STM32-IAP基本原理及应用 | ICP、IAP程序下载流程 | 程序执行流程 | 配置IAP到STM32F4xxxChapter3 STM32基于Y…

SQLite数据库在Linux系统上的使用

SQLite是一个轻量级的数据库解决方案&#xff0c;它是一个嵌入式的数据库管理系统。SQLite的特点是无需独立的服务器进程&#xff0c;可以直接嵌入到使用它的应用程序中。由于其配置简单、支持跨平台、服务器零管理&#xff0c;以及不需要复杂的设置和操作&#xff0c;SQLite非…

python如何输入多行

Python中的Input()函数在输入时&#xff0c;遇到回车符&#xff0c;那么一次输入就结束了。这不能满足输入多行文本并且行数也不确定的情形&#xff0c;当然输入空行也是允许的。 方法1&#xff1a;利用异常处理机制实现 lines[] while True:try:lines.append(input())except:…

达梦数据库清理归档日志的方法

达梦数据库清理归档日志的方法 在达梦数据库&#xff08;DM数据库&#xff09;中&#xff0c;归档日志文件是数据库运行过程中产生的&#xff0c;用于记录所有对数据库修改的详细信息。这些日志对于数据库的恢复非常关键&#xff0c;尤其是在进行灾难恢复或数据恢复时。然而&a…

关于Linux下的进程等待(进程篇)

目录 为什么存在进程等待&#xff1f;进程等待是在做什么&#xff1f; 怎样去执行进程等待&#xff1f; status options 为什么存在进程等待&#xff1f;进程等待是在做什么&#xff1f; 代码示例&#xff1a;模仿僵尸进程 #include <stdio.h> #include <unistd.…

xss跨站脚本攻击笔记

1 XSS跨站脚本攻击 1.1 xss跨站脚本攻击介绍 跨站脚本攻击英文全称为(Cross site Script)缩写为CSS&#xff0c;但是为了和层叠样式表(CascadingStyle Sheet)CSS区分开来&#xff0c;所以在安全领域跨站脚本攻击叫做XSS 1.2 xss跨战脚本攻击分类 第一种类型:反射型XSS 反射…

java数据结构与算法刷题-----LeetCode684. 冗余连接

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 并查集 并查集 解题思路&#xff1a;时间复杂度O( n ∗ l o g 2…

ThinkPHP审计(2) Thinkphp反序列化链5.1.X原理分析从0编写POC

ThinkPHP审计(2) Thinkphp反序列化链子5.1.X原理分析&从0编写POC 文章目录 ThinkPHP审计(2) Thinkphp反序列化链子5.1.X原理分析&从0编写POC动态调试环境配置Thinkphp反序列化链5.1.X原理分析一.实现任意文件删除二.实现任意命令执行真正的难点 Thinkphp反序列化链5.1.…

JVM规范中的运行时数据区

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;每天一个知识点 ✨特色专栏&#xff1a…

SpringBoot 集成H2数据库,启动执行sql, 中文乱码

目录 H2数据库介绍 SpringBoot版本&#xff1a;SpringBoot 2.1.12.RELEASE 快速集成H2&#xff0c;maven依赖 快速集成H2&#xff0c;数据源及关键参数配置 spring.datasource.schema参数&#xff08;建表SQL脚本&#xff09; spring.datasource.data参数&#xff08;更新、…

Qt5 编译 Qt Creator 源码中的 linguist 模块

文章目录 下载 Qt Creator 源码手动翻译多语言自动翻译多语言 下载 Qt Creator 源码 Github: https://github.com/qt/qttools 笔记打算用 Qt 5.12.12 来编译 qt creator-linguist 所以笔者下载的是 tag - 5.12.12 &#xff0c;解压后如下&#xff0c;先删除多余的文件&#xf…