uni-app - - - - - 实现锚点定位和滚动监听功能(滚动监听功能暂未添加,待后续更新)

news2024/9/27 4:14:43

实现锚点定位和滚动监听功能

  • 1. 思路解析
  • 2. 代码示例

效果截图示例:

  • 点击左侧menu,右侧列表数据实现锚点定位
    在这里插入图片描述

1. 思路解析

  • 点击左侧按钮,更新右侧scroll-view对应的scroll-into-view的值,即可实现右侧锚点定位
  • 滚动右侧区域,计算右侧滚动距离 动态更新左侧scroll-view对应的scroll-into-view的值,即可实现左侧锚点定位(暂无需求,先提供思路)

【scroll-view官网】

2. 代码示例

HTML


<view>


	<!-- 左侧menu -->
	<scroll-view scroll-y="true" :scroll-into-view="category.categoryMenuIntoView"
		scroll-with-animation="true">
		
		<view :id='"category-menu-" + index' v-for="(item, index) in category.coffeeList" :key="item.categoryId" @click="switchCategoryMenu(item,index)">
			{{ item.categoryName }}		
		</view>
		
	</scroll-view>




	<!-- 右侧列表 -->
	<scroll-view scroll-y="true" :scroll-into-view="category.coffeeIntoView" scroll-with-animation="true">
	
		<view :id='"category-coffee-" + index' @scroll='coffeeScroll'>
			{{item.name}}
		</view>
		
	</scroll-view>

</view>

重点:

  • scroll-into-view:值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素
  • id设置:唯一值切不能为数字开头(后续需该值赋给scroll-into-view

JS

// 定义数据
const category = reactive({
	idx: 0,
	coffeeList: [],
	categoryMenuIntoView: 'category-menu-0',
	coffeeIntoView: 'category-coffee-0'

})



/**
 * 点击切换左侧menu
 */
const switchCategoryMenu = (item, index) => {
	if (category.idx == index) return console.log('点击即为当前选中分类,无需切换逻辑')
	category.idx = index
	category.categoryMenuIntoView = `category-menu-${index}`
	category.coffeeIntoView = `category-coffee-${index}`
}



/**
 *  onLoad之后执行,预先计算出右侧锚点卡片的范围
 */
const getDistanceToTop = () => {
	distanceList.value = []; // 清空旧的距离列表
	const selectorQuery = uni.createSelectorQuery();
	selectorQuery.selectAll('.coffee-box').boundingClientRect(rects => {
		console.log('rects.map(rect => rect.top)', rects.map(rect => rect.top))
		distanceList.value = rects.map(rect => rect.top); // 直接映射为 `top` 值
	}).exec();
}



/**
 *  节流监听右侧区域滚动,联动左侧menu锚点定位
 *  根据滚动出的距离,属于getDistanceToTop对应的哪一个范围,动态修改左侧scroll-into-view的值即可
 */
const coffeeScroll = throttle((event) => {
	let scrollTop = event.detail.scrollTop;
}, 200); // 节流时间 300ms



如此即可实现锚点定位功能。(滚动监听功能后续可能会更新)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

攻防世界--->robots

学习笔记。 robots&#xff1a; 得&#xff0c;就是隐藏某些东西呗。 - - 好吧&#xff0c;还是不会。 参考&#xff1a; 攻防世界——新手区——robots_robots flag-CSDN博客https://blog.csdn.net/weixin_45864041/article/details/108036234 突破点&#xff1a; so&#…

u-navber自定义导航栏搜索框

效果 代码 <template><view><u-navbar :is-back"false"><view class"navbar"><view class"search"><image src"../../static/my_device/search_icon.png" class"search_image"></i…

代码随想录算法day40 | 动态规划算法part13 | 647. 回文子串,516.最长回文子序列

647. 回文子串 动态规划解决的经典题目&#xff0c;如果没接触过的话&#xff0c;别硬想 直接看题解。 力扣题目链接(opens new window) 给定一个字符串&#xff0c;你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的…

箱包发霉怎么清洁霉斑 工厂箱包发霉翻箱处理方法

箱包是我们日常生活中的必备品&#xff0c;随着箱包工厂订单不断&#xff0c;但工厂最头疼的就是会经常遇到批量的箱包出现发霉的问题。一旦发霉&#xff0c;并要面临一笔巨额索赔问题&#xff0c;尤其出口到国外发霉了&#xff0c;经ihaoer防霉人士介绍一种简单有效的方法&…

apple developer 开发者账号被停用,提示Locked,终于解决了

事情是这样的&#xff0c;9.11我们要发布app的时候&#xff0c;一直登录不上。然后联系了苹果客服&#xff0c;告知账号不活跃。于是让我们通过活跃申请、以及重置密码申请操作来解决。 然后&#xff0c;操作一遍又一遍&#xff0c;都解决不了。 后来联系可国外的客服&#…

新能源行业的福音,复合机器人助力打造智能无人化充电站

随着工业自动化和智能化水平的不断提升&#xff0c;无人化作业已成为现代生产线的必然趋势。在山西地区的室内生产条件下&#xff0c;富唯智能凭借其在自卸车充电系统领域的深厚积累&#xff0c;成功设计出一套高效、稳定的自卸车自动充电系统&#xff0c;为工业领域带来革命性…

ssm协同办公系统-计算机毕业设计源码42133

摘要 随着信息技术的迅猛发展&#xff0c;协同办公系统在企业和组织中扮演着越来越重要的角色。本研究旨在基于SSM框架、Java编程语言和MySQL数据库&#xff0c;设计和开发一个协同办公系统。首先&#xff0c;介绍了协同办公系统的背景和意义&#xff0c;详细阐述了系统的功能模…

Git - 版本管理

本文我们来介绍下 Git 管理版本的几个常用命令。 ‍ git log&#xff1a;查看提交日志 随着对文件的不断修改与提交&#xff0c;Git 帮我们管理了之前的各个版本。就好比玩一个能存档的游戏&#xff0c;每过一关就能帮我们存档&#xff0c;如果某一关没打过&#xff0c;就可…

告别繁琐!用 Light To Freedomen一键打造你的专属后台管理系统

作为开发者&#xff0c;特别是后端开发人员&#xff0c;前端开发工作往往是一项让人头疼的挑战。复杂的UI设计&#xff0c;数据展示和交互逻辑&#xff0c;不仅费时费力&#xff0c;还容易出现各种问题。然而&#xff0c;后台管理系统作为企业应用的核心模块&#xff0c;又是无…

uboot以tag结构体的方式给内核传参,cmdline,bootargs,以及uboot如何启动内核

uboot以tag结构体的方式给内核传参&#xff0c;cmdline&#xff0c;bootargs&#xff0c;以及uboot如何启动内核 一、u-boot启动流程 1、第一阶段 cpu/s3c24xx/start.S 主要是一些依赖于 CPU 体系结构的代码,比如硬件设备初始化代码 等。这一阶段的代码主要是通过汇编来实现…

3. 轴指令(omron 机器自动化控制器)——>MC_MoveRelative

机器自动化控制器——第三章 轴指令 5 MC_MoveRelative变量▶输入变量▶输出变量▶输入输出变量 功能说明▶指令详情▶时序图▶重启运动指令▶多重启动运动指令▶异常 MC_MoveRelative 指定自指令当前位置起的移动距离&#xff0c;进行定位。 指令名称FB/FUN图形表现ST表现MC…

如何查看线程

1、首先找到我们的电脑安装jdk的位置&#xff0c;这里给大家展示一下博主本人的电脑jdk路径下的jconsole位置。 2、 ok&#xff0c;那么找到这个jconsole程序我们直接双击打开就可以查看我们电脑的本地进程&#xff1a; jconsole 这里能够罗列出你系统上的 java 进程&#xff0…

学习threejs,绘制二维线

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言二、&#x1f340;绘制二维线1. ☘️…

软件测试岗位的经典面试题

在我近十年的测试职业生涯中&#xff0c;我也面试过不少软件测试岗位的候选人&#xff0c;这几个问题我也经常问到。但很多同学在这几个高频面试题上&#xff0c;其实并不太了解面试官提问背后的逻辑和目的。 这篇文章&#xff0c;聊聊这几道经典面试题考查的目的&#xff0c;…

花朵识别系统Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练

一、介绍 花朵识别系统。本系统采用Python作为主要编程语言&#xff0c;基于TensorFlow搭建ResNet50卷积神经网络算法模型&#xff0c;并基于前期收集到的5种常见的花朵数据集&#xff08;向日葵、玫瑰、蒲公英、郁金香、菊花&#xff09;进行处理后进行模型训练&#xff0c;最…

生成式AI赋能:对话式BI引领数据分析新潮流

引言&#xff1a;数据交互的革新之旅 在信息爆炸的今天&#xff0c;我们与数据交互的方式正经历着前所未有的变革。静态的仪表盘&#xff0c;尽管曾以视觉上的革新引领一时风尚&#xff0c;但如今已难以满足用户对动态、深度数据洞察的迫切需求。用户不再满足于仅仅观赏精美的…

如何恢复被删除的 GitLab 项目?

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

攻防世界--->backup

学习笔记。 备份文件&#xff1f; 没听过&#xff0c;&#xff0c;&#xff0c;搜呗。 我看的这个&#xff1a; CTF——Web网站备份源码泄露_web常见备份文件有哪些-CSDN博客https://blog.csdn.net/weixin_51735061/article/details/124238304 进入靶场。 嗯&#xff1f; -…

实操学习——文章和评论的设计

实操学习——文章和评论的设计 1.文章表的设计2.文章表接口演示基础权限创建文章修改文章删除文章浏览所有文章 3.评论表的设计4.评论表接口演示1. 查询指定文章下的所有评论 1.文章表的设计 创建一个community的app 在settings中 完成注册 定义模型 创建文章表 from django.…

2024 Redis 全部

1. 单机部署 1.1 检查环境&#xff0c;创建目录。 # 本地运行&#xff0c;不需要考虑安装的原因&#xff0c;可以卸载防火墙 # 关闭防火墙 systemctl stop firewalld.service# 查看防火强状态 firewall-cmd --state# redis 是基于gcc 环境的&#xff0c;查看是否有 gcc 环境 …