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

小程序Tab栏与页面滚动联动

小程序tab栏切换与页面滚动联动

  • tab栏与页面滚动联动
  • 点击tab栏页面跳到指定位置
  • 滚动页面时切换tab栏

tab栏与页面滚动联动

在进行小程序开发时,需要实现点击tab栏页面滚动到某一指定位置,并且滚动页面时,小程序的tab栏进行切换。
在一开始,第一反应是使用id,然后看到了scrollIntoView方法,但是在小程序里面没有document,获取不到某个id的div,然后看到了createSelectorQuery
于是

      let query = uni.createSelectorQuery();let collapse1 = query.select("collapse1");collapse1.scrollIntoView();

然后就会报错n.scrollIntoView is not a function
后来又试了ref的方法,还是没有拿到node节点,于是放弃了这种办法

  • 但是我依然觉得这种方法有可实现性,只不过我不会
    当然,条条道路通罗马,好男人不会在一棵树上吊死,于是乎有了下面的方法:

点击tab栏页面跳到指定位置

寻寻觅觅,冷冷清清,看到了这个激动万分
在这里插入图片描述
于是乎页面的布局为

    <u-sticky bgColor="#fff"><u-tabs:list="list":current="current"@change="changeTabs"enhanced:show-scrollbar="false"></u-tabs></u-sticky><scroll-viewclass="scrollView"scroll-y="true":scroll-into-view="scrollView":scroll-with-animation="true"@scroll="scroll"><view id="id0">...</view><view id="id1">...</view><view id="id2">...</view></scroll-view>

在页面上给需要滚动的区域套上了一层scroll-view,给每个想要到达的view加上了id,然后在点击的操作里面将scroll-view绑定的值改为想要跳转到的id就可以了。

    changeTabs(index) {this.scrollView = `id${index}`;this.current = index;},

这样就可以实现点击tab切换时页面滚动到指定位置了。
做到这里有没有想到一个东西–锚点链接
在这里插入图片描述

滚动页面时切换tab栏

页面滚动刚刚好就需要用到scroll-view的scroll事件了,scroll事件默认返回的信息中有页面的一些属性。
首先在页面加载完成之后获取了每个需要跳转到的元素的高度

  onReady() {var that = this;setTimeout(function() {var query = wx.createSelectorQuery();query.select("#id0").boundingClientRect();query.select("#id1").boundingClientRect();query.select("#id2").boundingClientRect();query.exec(function(res) {that.heightData = res;});}, 500);},

然后根据高度来计算页面滚动到什么位置的时候修改tab的当前值

scroll(event) {let that = this;let e = event.detail;if (e.scrollTop >= 0 && e.scrollTop <= that.heightData[0].height - 45) {that.current = 0;}if (e.scrollTop >= that.heightData[1].top - 45 &&e.scrollTop <= that.heightData[1].top + that.heightData[1].height - 45) {that.current = 1;}if (e.scrollTop >= that.heightData[2].top - 45 &&e.scrollTop <= that.heightData[2].top + that.heightData[2].height - 45) {that.current = 2;}}

这样的话在滚动页面之后,判断页面的位置修改tab的值就可以了。

相关文章:

小程序Tab栏与页面滚动联动

小程序tab栏切换与页面滚动联动 tab栏与页面滚动联动点击tab栏页面跳到指定位置滚动页面时切换tab栏 tab栏与页面滚动联动 在进行小程序开发时&#xff0c;需要实现点击tab栏页面滚动到某一指定位置&#xff0c;并且滚动页面时&#xff0c;小程序的tab栏进行切换。 在一开始&a…...

Java,数据结构与集合源码,关于List接口的实现类(ArrayList、Vector、LinkedList)的源码剖析

目录 ArrayList ArrayList的特点&#xff1a; ArrayList源码解析&#xff1a; Vector Vector的特点&#xff1a; Vector源码解析&#xff1a; LinkedList LinkedList的特点&#xff1a; LinkedList的源码剖析&#xff1a; 使用说明&#xff1a; ArrayList ArrayList的…...

算法基础(python版本)

第二章 算法设计思想 一、搜索排序 1.排序算法 https://visualgo.net/zh/sorting (1)冒泡排序 # 思路&#xff1a; # (1)比较相邻元素&#xff0c;如果第一个比第二个大&#xff0c;则交换他们 # (2)第一轮下来&#xff0c;可以保证最后一个数一定是最大的&#xff1b;第二…...

使用Arrays.Sort并定制Comparator排序解决合并区间

合并区间-力扣算法题56题 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输入&am…...

【机器学习】039_合理初始化

一、稳定训练 目标&#xff1a;使梯度值在更合理的范围内 常见方法如下&#xff1a; 将乘法变为加法 ResNet&#xff1a;当层数较多时&#xff0c;会加入一些加法进去 LSTM&#xff1a;如果时序序列较长时&#xff0c;把一些对时序的乘法做加法 归一化 梯度归一化&…...

使用Arrays.asList与不使用的区别

在写算法的时候&#xff0c;遇到了有的题解使用的是Arrays.asList&#xff0c;也有的是直接新建一个List集合将元素加进去的。 看了一下算法的时间&#xff0c;两者居然相差了9秒。 算法原地址&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长…...

基于可变形卷积和注意力机制的带钢表面缺陷快速检测网络DCAM-Net(论文阅读笔记)

原论文链接->DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Based on Deformable Convolution and Attention Mechanism | IEEE Journals & Magazine | IEEE Xplore DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Base…...

el-table 对循环产生的空白列赋默认值

1. el-table 空白列赋值 对el-table中未传数据存在空白的列赋默认值0。使用el-table 提供的插槽 slot-scope&#xff1a;{{ row || ‘0’ }} 原数据&#xff1a; <el-table-column label"集镇" :propcity ><template slot-scope"{row}">{{…...

新一代网络监控技术——Telemetry

一、Telemetry的背景 传统的网络设备监控方式有SNMP、CLI、Syslog、NetStream、sFlow&#xff0c;其中SNMP为主流的监控数据方式。而随着网络系统规模的扩大&#xff0c;网络设备数量的增多&#xff0c;网络结构的复杂&#xff0c;相应监控要求也不断提升&#xff0c;如今这些…...

java斗牛,咋金花

无聊时间&#xff0c;打发下游戏 简单说下思路 目录 1.创建牌对象 2.创建52张牌&#xff0c;不包含大小王 3.洗牌 4.发牌 1.创建牌对象 2.创建52张牌&#xff0c;不包含大小王 3.洗牌 4.发牌 /*** 扑克牌*/ public class Poker {/*** 花色*/private String cardSuits…...

深信服技术认证“SCSA-S”划重点:信息收集

为帮助大家更加系统化地学习网络安全知识&#xff0c;以及更高效地通过深信服安全服务认证工程师考核&#xff0c;深信服特别推出“SCSA-S认证备考秘笈”共十期内容&#xff0c;“考试重点”内容框架&#xff0c;帮助大家快速get重点知识~ 划重点来啦 深信服安全服务认证工程师…...

代码逻辑修复与其他爬虫ip库的应用

在一个项目中&#xff0c;由于需要设置 http_proxy 来爬虫IP访问网络&#xff0c;但在使用 requests 库下载文件时遇到了问题。具体表现为在执行 Python 脚本时&#xff0c;程序会阻塞并最终超时&#xff0c;无法正常完成文件下载。 解决方案 针对这个问题&#xff0c;我们可以…...

字符串结尾空格比较相关参数BLANK_PAD_MODE(DM8:达梦数据库)

DM8:达梦数据库 字符串结尾空格比较相关参数BLANK_PAD_MODE 环境介绍1 BLANK_PAD_MODE01.1 初始化数据库1.2 创建测试表 T0 2 BLANK_PAD_MODE12.1 初始化数据库2.2 创建测试表 T1 3 BLANK_PAD_MODE只对字段varchar类型生效3.1 BLANK_PAD_MODE 对char 类型对比无效3.2 在两个数据…...

微型计算机原理MOOC题

一、8254 1.掉坑了&#xff0c;AL传到端口不意味着一定传到的是低位&#xff0c;要看控制字D5和D4&#xff0c;10是只写高位&#xff0c;所以是0A00.。。 2. 3. 4.待解决&#xff1a;...

TensorFlow实战教程(十八)-Keras搭建卷积神经网络及CNN原理详解

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章详细讲解了Keras实现分类学习,以MNIST数字图片为例进行讲解。本篇文章详细讲解了卷积神经网络CNN原理,并通过Keras编写CNN实现了MNIST分类学习案例。基础性文章,希望对您有所帮助! 一…...

uniapp为什么能支持多端开发?uniapp底层是怎么做的?

文章目录 前言uniapp为什么能支持多端开发&#xff1f;uniapp底层是怎么做条件编译uniapp的语法uniapp如何编译为不同端的代码uniapp的底层是如何做平台特性适配的呢&#xff1f;后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;uniapp &…...

《数据仓库入门实践》

前言&#xff1a; 1、问什么要写这篇博客&#xff1f; 随着自己在数仓岗位工作的年限增加&#xff0c;对数仓的理解和认知也在发生着变化 所有用这篇博客来记录工作中用到的知识点与经验 2、这篇博客主要记录了哪些内容&#xff1f; 在日常工作中&#xff0c;发现刚接触不久数仓…...

什么是arguments对象?

arguments 对象是 JavaScript 中的一个特殊对象&#xff0c;它包含了函数被调用时传入的所有参数。arguments 对象是一个类数组对象&#xff0c;它有一个 length 属性和按数字索引的元素。 每个函数在执行时都会自动创建一个 arguments 对象。我们可以通过arguments去访问参数…...

Java LinkedList链表、HashSet、HashMap

一、Java LinkedList&#xff1a; 链表&#xff08;LinkedList&#xff09;是一种常见的基础数据结构&#xff0c;是一种线性表&#xff0c;在每一个节点里存储下一个节点的地址。链表分为单向链表和双向链表。单向链表包含两个值&#xff1a;当前节点的值和指向下一个节点的链…...

Linux中清除cache/buffer方法

1、查看Linux中的cache/buffer情况&#xff1a; free -h 2、仅清除页面缓存PageCache方法&#xff1a; echo 1 > /proc/sys/vm/drop_caches 3、清除目录项和inode节点&#xff1a; echo 2 > /proc/sys/vm/drop_caches 4、清除页面缓存、目录项和inode节点&#xff1a;…...

从吃灰到爽玩:手把手教你用SteamVR设置HTC Vive,搞定《半衰期:爱莉克斯》前的必备步骤

从吃灰到爽玩&#xff1a;HTC Vive终极配置指南与《半衰期&#xff1a;爱莉克斯》体验优化 当你拆开HTC Vive包装的那一刻&#xff0c;眼前堆叠的线缆和配件可能让人望而生畏。但别担心&#xff0c;这套设备的价值远超你的想象——尤其是当你准备体验《半衰期&#xff1a;爱莉克…...

Rust持久化内存编程:使用persistent-memory库构建崩溃安全的B+树索引

1. 项目概述&#xff1a;当内存拥有了“记忆”如果你在服务器或者高性能计算领域摸爬滚打过几年&#xff0c;肯定对“掉电即失”这个内存的固有特性又爱又恨。爱的是它的速度&#xff0c;恨的是它的“健忘症”。数据在内存里跑得飞快&#xff0c;可一旦服务器重启或者意外断电&…...

网易云音乐FLAC无损音乐批量下载:3步轻松获取高品质音乐库

网易云音乐FLAC无损音乐批量下载&#xff1a;3步轻松获取高品质音乐库 【免费下载链接】NeteaseCloudMusicFlac 根据网易云音乐的歌单, 下载flac无损音乐到本地.。 项目地址: https://gitcode.com/gh_mirrors/nete/NeteaseCloudMusicFlac 你是否渴望拥有高品质的无损音乐…...

从Cron到任务编排:深入解析mission-control自动化调度平台

1. 项目概述&#xff1a;从“任务控制”到个人效率中枢最近在折腾个人工作流自动化的时候&#xff0c;发现了一个挺有意思的项目&#xff0c;叫crshdn/mission-control。光看这个名字&#xff0c;就有点意思——“任务控制”&#xff0c;听起来像是NASA指挥中心那种感觉。实际上…...

拜读了顶会顶刊上这些论文,原来多模态特征融合是这么玩的

多模态特征融合现在确实比端到端好发&#xff0c;还能蹭一波大模型的热度&#xff0c;因此我最近翻了很多相关的论文&#xff0c;发现这块新活还真不少。简单来说&#xff0c;就是这方向现在不搞简单的拼接/注意力了&#xff0c;改卷动态路由、层次化交互、低秩分解、基于大模型…...

DenseGRPO:流匹配模型的密集奖励强化学习框架

1. 项目概述DenseGRPO是一种创新的强化学习框架&#xff0c;专门用于优化流匹配模型&#xff08;如文本到图像生成系统&#xff09;的对齐过程。传统强化学习方法在训练这类生成模型时面临一个根本性挑战&#xff1a;稀疏奖励问题。具体表现为仅在生成过程结束时提供单一反馈信…...

Spring Data 2027 动态查询详解

Spring Data 2027 动态查询详解 别叫我大神&#xff0c;叫我 Alex 就好 Spring Data 2027 带来了强大的动态查询功能&#xff0c;让开发者能够更灵活地构建复杂的查询语句。动态查询是一种根据运行时条件构建查询的能力&#xff0c;它在处理复杂的业务场景时非常有用。本文将详…...

Google账号登录无标题-配置文件1

重启电脑之后发现需要谷歌登录的poner和chatGPT都是Google一直转圈圈&#xff0c;科学上网是没问题的&#xff0c;不然都不会到这一步 有搜到可能是DNS修改出现的问题&#xff0c;也贴上帖主解决问题的过程&#xff0c;不过我的问题不在这里(99 封私信 / 8 条消息) 谷歌账号登…...

IVFFlat(Inverted File with Flat Storage)索引算法

IVFFlat 索引算法介绍 概述 IVFFlat&#xff08;Inverted File with Flat Storage&#xff09;是IVF算法的一个变种&#xff0c;它在IVF的基础上保持了原始向量的精确存储。与IVFADC&#xff08;使用量化压缩&#xff09;不同&#xff0c;IVFFlat在每个聚类中完整存储原始向量&…...

硬件指纹保护实战:三分钟掌握EASY-HWID-SPOOFER核心功能

硬件指纹保护实战&#xff1a;三分钟掌握EASY-HWID-SPOOFER核心功能 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER 你是否曾因硬件指纹追踪而无法享受新用户优惠&#xff1f;或是…...