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

Uniapp实现页面滚动Tab吸顶,点击tab内容滚动到对应tab内容位置

思路:运用uniapp原生提供方法uni.createSelectorQuery()获取滚动对应节点的信息,即节点距离页面顶部的距离,再通过uniapp原生监听页面滚动事件onPageScroll,获取页面内容滚动的高度,二者相加即定位到对应节点的滚动距离。

1.template结构

    <view class="content-tabs-box"><view class="content-tabs" :class="{'is-fixed': isTabFixed}"><viewv-for="(item, index) in detailTabs" :key="index" class="tab" :class="{'active': curTab === index}" @click="scrollTo(index, item.className)">{{item.name}}</view></view></view><!-- 正文详情 --><view class="library-detail-content"><view v-if="libraryDetail.videoUrl" class="content-msg"><video :src="libraryDetail.videoUrl" autoplay style="width: 100%;" /></view><view v-else class="content-msg" v-html="libraryDetail.content"></view></view><!-- 相关附件 --><view v-if="attachment.length > 0" class="library-detail-attachment"><view class="attachment-box"><view class="title">相关附件</view></view><view class="attachment-list-box"><view v-for="(item, index) in attachment" :key="index" class="attchment-list"><view class="list-name">{{ item.name }}</view><view class="download-btn" @click="download(item.url)"><image src="@/static/images/allPolicy/download-btn.png" style="width: 35rpx;height: 36rpx;margin-right: 10rpx;" mode="scaleToFill" /><view>下载</view></view></view></view></view><!-- 图文解读 --><view v-if="relatedPosts.length > 0" class="library-detail-relatedPosts"><view class="attachment-box"><view class="title">图文解读</view></view><view class="attachment-list-box"><view v-for="(item, index) in relatedPosts" :key="index" @click="toWebView(item.url, item.title)" class="attchment-list"><view><span style="margin-right: 20rpx;">{{ postType(item.related_classify) }}</span> {{ item.title }}</view></view></view></view> 

2.定义变量

  data() {return {curTab: 0,isTabFixed: false,tabTop: 0,  // tab距离顶部的距离curClassName: '',pageScrollTop: 0}},computed() {detailTabs() {let tabs = [{name: '正文详情',className: '.library-detail-content'}]if(this.attachment && this.attachment.length > 0) {tabs.splice(1, 0, {name: '相关附件',className: '.library-detail-attachment'})}if(this.relatedPosts && this.relatedPosts.length > 0) {tabs.splice(2, 0, {name: '图文解读',className: '.library-detail-relatedPosts'})}return tabs},}

3.方法定义

// 点击tab滚动事件scrollTo(tab, className) {if(!className) returnif(this.curClassName == className) returnthis.curTab = tabconst query = uni.createSelectorQuery().in(this);query.select(className).boundingClientRect(data => {uni.pageScrollTo({scrollTop: className == '.library-detail-content' ? 0 : (data?.top + ((this.pageScrollTop || 0))),duration: 300})}).exec();this.curClassName = className},// uni页面滚动监听事件onPageScroll(e) {// 获取tabs的距离顶部的距离this.tabTop = uni.createSelectorQuery().select('.content-tabs').boundingClientRect(data => {this.tabTop = data.top;this.isTabFixed = (e.scrollTop > this.tabTop)this.pageScrollTop = e.scrollTop}).exec();},

4.实现效果

相关文章:

Uniapp实现页面滚动Tab吸顶,点击tab内容滚动到对应tab内容位置

思路&#xff1a;运用uniapp原生提供方法uni.createSelectorQuery()获取滚动对应节点的信息&#xff0c;即节点距离页面顶部的距离&#xff0c;再通过uniapp原生监听页面滚动事件onPageScroll&#xff0c;获取页面内容滚动的高度&#xff0c;二者相加即定位到对应节点的滚动距离…...

在Elasticsearch中-SpaceJam一个全文搜索的实例

在Elasticsearch中进行全文搜索通常涉及几个步骤&#xff1a;创建索引、定义映射、索引文档、执行搜索查询。下面我将通过一个名为"SpaceJam"的虚构实例来演示如何进行全文搜索。 ### 步骤 1: 创建索引 首先&#xff0c;我们需要创建一个索引。在这个例子中&#x…...

Microsoft Edge浏览器安装crx拓展插件教程

1、首先打开edge浏览器&#xff0c;点击顶部地址栏。 2、在地址栏中输入"edge://flags/#extensions-on-edge-urls"并按下回车。2、在地址栏中输入"edge://flags/#extensions-on-edge-urls"并按下回车。 3、进入后&#xff0c;将图示选项改为“已禁用”。 …...

陈晓婚前婚后大变样

陈晓婚前婚后大变样&#xff1f;陈妍希揭秘甜蜜与现实的碰撞在娱乐圈的星光璀璨中&#xff0c;有一对夫妻总是津津乐道&#xff0c;那就是陈晓和陈妍希。他们的爱情故事&#xff0c;从荧幕到现实&#xff0c;一直备受关注。然而&#xff0c;近日陈妍希在节目中透露&#xff0c;…...

Linux sudo -i取消密码的方法

直接修改 /etc/sudoers 文件来实现 sudo -i 无需密码的配置。以下是具体步骤&#xff1a; 步骤 打开终端并使用 visudo 命令编辑 /etc/sudoers 文件 使用 visudo 编辑 sudoers 文件是推荐的方法&#xff0c;因为它会在保存前进行语法检查&#xff0c;防止出现配置错误。 sudo …...

PMP考试多少分才算合格通过?

PMP是美国颁发的专业资格认证,其考试采用的是国外的评分体系。考试内容被划分为3大部分:人、过程和商业环境,每个部分所占的权重不同。考试形式为180个单选和多选题,其中有25题不计分。考试可能会抽到错误或未回答的题目,也可能抽到正确答题的题目。最终根据NBTA的4个等级进行综…...

原生js写数据自动纵向滚动,鼠标移入后停止滚动可手动滚动,鼠标移出转自动

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>滚动页面</title><link rel"styleshee…...

板凳----Linux/Unix 系统编程手册 25章 进程的终止

25.1 进程的终止&#xff1a;_exit()和exit() 440 1. _exit(int status)&#xff0c; status 定义了终止状态&#xff0c;父进程可调用 wait 获取。仅低8位可用&#xff0c;调用 _exit() 总是成功的。 2.程序一般不会调用 _exit()&#xff0c; 而是调用库函数 exit()。exit() …...

若依Ruoyi-vue和element admin的区别,该如何选择。

提到中后台的前端框架&#xff0c;每个人都能列举出很多&#xff0c;这其中提及率比较高的就是Ruoyi和element admin两款&#xff0c;很多小伙伴分不清二者&#xff0c;本文为大家详细讲解一下。 一、若依Ruoyi-vue是什么&#xff1f; 若依Ruoyi-Vue是一款基于 Vue.js 开发的…...

Sklearn之朴素贝叶斯应用

目录 sklearn中的贝叶斯分类器 前言 1 分类器介绍 2 高斯朴素贝叶斯GaussianNB 2.1 认识高斯朴素贝叶斯 2.2 高斯朴素贝叶斯建模案例 2.3 高斯朴素贝叶斯擅长的数据集 2.3.1 三种数据集介绍 2.3.2 构建三种数据 2.3.3 数据标准化 2.3.4 朴素贝叶斯处理数据 2.4 高斯…...

网络编程(二)TCP编程 TCP粘包问题

文章目录 一、TCP网络编程&#xff08;一&#xff09;流程&#xff08;二&#xff09;相关函数1. socket2. bind3. listen4. accept5. connect 二、收发函数&#xff08;一&#xff09;send函数&#xff08;二&#xff09;recv函数 三、TCP粘包问题&#xff08;一&#xff09;将…...

【总线】AXI总线:FPGA设计中的通信骨干

目录 AXI4&#xff1a;高性能地址映射通信的基石 AXI4-Lite&#xff1a;轻量级但功能强大的通信接口 AXI4-Stream&#xff1a;高速流数据传输的利器 结语&#xff1a;AXI总线在FPGA设计中的重要性 大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计…...

Cesium源码解析六(3dtiles属性获取、建筑物距离计算、建筑物着色及其原理分析)

快速导航 Cesium源码解析一&#xff08;搭建开发环境&#xff09; Cesium源码解析二&#xff08;terrain文件的加载、解析与渲染全过程梳理&#xff09; Cesium源码解析三&#xff08;metadataAvailability的含义&#xff09; Cesium源码解析四&#xff08;metadata元数据拓展…...

AI 情感聊天机器人之旅 —— 相关论文调研

开放域闲聊场景 Prompted LLMs as Chatbot Modules for Long Open-domain Conversation 发布日期&#xff1a;2023-05-01 简要介绍&#xff1a;作者提出了 MPC&#xff08;模块化提示聊天机器人&#xff09;&#xff0c;这是一种无需微调即可创建高质量对话代理的新方法&…...

WPF Prism框架搭建

WPF Prism框架搭建 1.引入Prism框架 在Nuget包管理器中搜索Prism&#xff0c;并添加到项目中 2.在项目中使用prism框架 2.1 修改app.xaml 删除项目中自带的StartupUri 修改Application节点为prism:PrismApplication 引入prism命名空间 <prism:PrismApplication x:C…...

MyBatisplus使用报错--Invalid bound statement

报错如下 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.lotus.mybatis.mapper.UserMapper.selectListat org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:235)at com.baomidou.mybatisplus.cor…...

QT-QPainter实现一个动态充电的电池

1、效果 2、核心代码 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer>...

【云原生】Kubernetes----Metrics-Server组件与HPA资源

目录 引言 一、概述 &#xff08;一&#xff09;Metrics-Server简介 &#xff08;二&#xff09;Metrics-Server的工作原理 &#xff08;三&#xff09;HPA与Metrics-Server的作用 &#xff08;四&#xff09;HPA与Metrics-Server的关系 &#xff08;五&#xff09;HPA与…...

模拟原神圣遗物系统-小森设计项目,设计圣遗物(生之花,死之羽,时之沙,空之杯,理之冠)抽象类

分析圣遗物 在圣遗物系统&#xff0c;玩家操控的是圣遗物的部分 因此我们应该 物以类聚 人与群分把每个圣遗物的部分&#xff0c;抽象出来 拿 生之花&#xff0c;死之羽为例 若是抽象 类很好的扩展 添加冒险家的生之花 时候继承生之花 并且名称冒险者- 生之花 当然圣遗物包含…...

仿真模拟--telnet服务两种认证模式(自作)

自己做的笔记,有问题或看不懂请见解一下~ 目录 两个路由器间实现telnet服务(password认证模式) server client 两个路由器间实现telnet服务(aaa认证模式) server client 改名 tab键补齐 不会就扣问号 ? save 两个路由器间实现telnet服务…...

Apple Phone Memory

Apple Phone Memory 苹果手机内存查询&#xff0c;哪些应用程序&#xff08;app&#xff09;占用内存&#xff1a; 设置 通用 iPhone储存空间 清理下QQ音乐&#xff1a;...

Kubernetes容器运行时:Containerd vs Docke

容器化技术笔记 Kubernetes容器运行时&#xff1a;Containerd vs Docke - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this arti…...

【java 线程的状态】

介绍 Java 线程在运⾏的⽣命周期中的指定时刻只可能处于下⾯ 6 种不同状态的其中⼀个状态 状态名称说明NEW初始状态,线程被构建,但是还没有调用start()方法RUNNABLE运行状态,Java线程将操作系统中的就绪和运行两种状态统称为"运行中"BLOCKED阻塞状态,表示线程阻塞于…...

php加密验签

签名生成步骤&#xff08;小程序端/前端&#xff09;&#xff1a; 确定参与签名的参数&#xff1a;选择需要参与签名的请求参数&#xff0c;通常包括请求的时间戳、随机数、请求的数据等。 参数排序与拼接&#xff1a;将所有参与签名的参数按照字母顺序排序&#xff0c;并拼接成…...

【Golang - 90天从新手到大师】Day06 - 数组

系列文章合集 Golang - 90天从新手到大师 数组是golang中最常用的一种数据结构,数组就是同一类型数据的有序集合 定义一个数组 格式: var name [n]type n为数组长度,n>0 且无法修改,type为数组的元素类型如: var a [2]int上面的例子定义了一个长度为2,元素类型为int的数组…...

java的有参构造方法

java的有参构造方法和无参构造方法类似&#xff0c;区别是构造方法名称里后面跟着一个括号&#xff0c;括号里是参数的定义 示例代码如下 class student4{private String name;private int age;public student4(String n,int a) {namen;agea;System.out.println("调用了…...

Vue66-vue-默认插槽

一、默认插槽需求 1-1、原本的写法&#xff1a; 在每个category组件中用v-show来做条件渲染&#xff0c;但是不方便&#xff01; 1-2、默认插槽 img标签&#xff0c;ul标签&#xff0c;video标签&#xff0c;都是在app组件中完成解析之后&#xff0c;塞到category组件中的&…...

tsf-consul的使用

在腾讯云微服务平台TSF中使用Consul作为服务发现组件,通常需要遵循以下步骤: ### 1. 创建应用 首先,您需要在TSF控制台创建一个应用。在创建应用时,选择合适的业务类型、开发语言、开发框架等信息。对于使用Consul作为服务发现组件的Spring Cloud应用,您需要选择“业务应…...

【perl】基本语法 /备忘录/

分享 perl 语言学习资源 Perl 教程|极客教程 (geek-docs.com) Perl [zh] (runebook.dev) Perl 运算符 | 菜鸟教程 (runoob.com) Perl Documentation - Perldoc Browser Search the CPAN - metacpan.org 当然还有一些经典书籍&#xff0c;不再列举。 1、数字 1.1、数字表…...

mongodb 集群安装

整体架构图&#xff1a; 1. 配置域名 Server1&#xff1a; OS version: CentOS Linux release 8.5.2111 hostnamectl --static set-hostname mongo01 vi /etc/sysconfig/network # Created by anaconda hostnamemong01 echo "192.168.88.20 mong1 mongo01.com mongo…...

企业门户网站建设特色/外链百科

Java Socket基础&#xff08;一&#xff09; Java Socket基础&#xff08;二&#xff09; 2.3&#xff09;LinkServer2.java/** * 开启服务器&#xff0c;长连接各个Socket&#xff0c;主动发送数据 * * author Join */ public class LinkServer2 extends Thread { /…...

公司网站用wordpress/b2b平台网站

2013年3月计算机二级考试成绩查询时间和方式2013年3月NCRE考试成绩发布。考试成绩已陆续公布(不同地区公布成绩的时间将有所差异)。查分方法有从教育部考试中心综合查询网查询、各地区官方网站查询、各考点领取成绩单(部分省市)、拨打当地168信息台(部分省市)、短信查分(部分省…...

虚拟空间可以做视频网站么/手机如何建立网站

开关机sync &#xff1a;把内存中的数据写到磁盘中(关机、重启前都需先执行sync)shutdown -r now或reboot &#xff1a;立刻重启shutdown -h now &#xff1a;立刻关机shutdown -h 20:00 &#xff1a;预定时间关闭系统(晚上8点关机&#xff0c;如果现在超过8点&#xff0c;则明…...

wordpress 同步登录/网站建设软件

解析&#xff1a;此题手算或者用excel很快&#xff0c;这里我用代码代码量较大但思路简单。 星系炸弹 在X星系的广袤空间中漂浮着许多X星人造“炸弹”&#xff0c;用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如&#xff1a;阿尔法炸弹2015年1月1日放置&am…...

网站建设公司的电话/长沙关键词优化服务

最近几年的国际会议&#xff0c;逐渐成为了智能硬件刷存在感的地方。大量跨语种沟通的需求、复杂繁多的信息展示交互再加上媒体的集中关注&#xff0c;让很多主打AI同声传译、AI翻译机、服务机器人等等产品的科技厂商费尽心机也要在在会议上获得展示机会。如最近进行中的博鳌亚…...

三合一网站选什么系统/seo网络推广经理

一、什么是HBuilder HBuilder是DCloud&#xff08;数字天堂&#xff09;推出的一款支持HTML5的Web开发IDE。HBuilder的编写用到了Java、C、Web和Ruby。HBuilder本身主体是由Java编写。它基于Eclipse&#xff0c;所以顺其自然地兼容了Eclipse的插件。 二、下载安装HBuilder 下…...