uniapp锚点定位

article/2025/8/23 19:16:53

uniapp 锚点定位

需求:在 uniapp 写 App 时,根据后端接口返回的数据渲染图文,并且要对图片进行锚点定位。

前提:后端要给每张图片一个单独的参数,用来区分每张图片。

思路:前端将这个特定参数注入到图片标签中,并且根据此特定参数进行锚点定位。

疑问:怎么用 uniapp 在 App 中进行锚点定位呢?

方法:用 uniapp 的 scroll-view 的 scroll-into-view 属性进行锚点定位。

scroll-view 标签必须给高度,不然在 App 中无法滚动,进而实现不了锚点定位效果。
(我的页面是后端返回的数据,高度不固定,因此不能写死高度。因此我将 <scroll-view> </scroll-view> 包裹住整个页面,再给一个页面高度 100vh ,就解决了高度问题。)

代码:

<template><view><!-- #ifndef H5 --><scroll-view class="scroller" :scroll-into-view="toView" scroll-y="true" scroll-with-animation="true"><!-- #endif --><view class="parseContainer" v-for="item in contentList" :key="item.id"><view v-for="item1 in item.contents" :key="item1.id"><!-- 需要锚点定位的图片: --><image v-for="(item2, index2) in item1.coverImgs.split(',')" :key="index2" style="width: 100%" mode="widthFix" :src="item2" :id="'anchor'+item1.imgList[0].id"></image><text class="word">{{ item1.content }}</text></view></view><!-- #ifndef H5 --></scroll-view><!-- #endif --></view>
</template>export default {data() {return {toView:'',}},methods: {toAnchor(id) {let anchorId = 'anchor'+id//  #ifdef H5document.documentElement.scrollTop = document.getElementById(anchorId).offsetTop - 100// #endif// #ifndef H5this.toView = anchorId;// #endif}}
}

以上代码中 #ifdef H5#ifndef H5#endif 均为 条件编译 ,因为在 H5 中锚点定位简单得很,不用这么复杂,所以单独用别的方法来处理。

在这里插入图片描述


番外:
也尝试过用以下 uni.pageScrollTo() 来做锚点定位,但是我这边 会出现 Bug: 同一个元素多次触发锚点次定位时,无法定位到准确位置…

let anchorId = 'anchor'+id
//  #ifdef H5
document.documentElement.scrollTop = document.getElementById(anchorId).offsetTop - 100
// #endif
// #ifndef H5
uni.createSelectorQuery().select(`.${anchorId}`).boundingClientRect(data => {// 此处的定时器,目的是:等待页面渲染完,然后滚动页面this.$nextTick(() => {uni.pageScrollTo({scrollTop: data.top,})})
}).exec();
// #endif

在这里插入图片描述


http://chatgpt.dhexx.cn/article/P6JVjMnp.shtml

相关文章

如何设置锚点居页面顶部距离

锚点是网页制作中超级链接的一种,又叫命名锚记。命名锚记像一个迅速定位器一样是一种页面内的超级链接,运用相当普遍。 使用命名锚记可以在文档中设置标记,这些标记通常放在文档的特定主题处或顶部。然后可以创建到这些命名锚记的链接,这些链接可快速将访问者带到指定位…

锚点定位的三种解决方法

因为在项目中遇到锚点定位的问题&#xff0c;觉得有必要单独成文&#xff0c;来介绍锚点定位的解决办法。 一 学习锚点定位之前的知识储备: 1.1 #号的作用 #代表网页中的一个位置。其右面的字符&#xff0c;就是该位置的标识符。比如&#xff0c;http://www.example.com/ind…

什么是 cookie? 会话 cookie 与持久性 cookie 之间 有何区别?

转载&#xff1a; https://www.cisco.com/c/en/us/products/collateral/security/web-security-appliance/cn/117925-technote-csc-00.html 有 2 种不同类型的 cookie&#xff1a;会话 cookie 和持久性 cookie 简介 本文将介绍什么是 HTTP cookie&#xff0c;以及会话 cookie …

数据持久化

数据持久化 企业数据架构存储技术存储架构 企业数据架构 持久化&#xff08;Persistence&#xff09;&#xff0c;即把数据&#xff08;如内存中的对象&#xff09;保存到可永久保存的存储设备中&#xff0c;如磁盘等。 数据按存储类型可以分为缓存数据库、关系型数据库、NoSQ…

事务四大特征:原子性,一致性,隔离性和持久性。

事务四大特征&#xff1a;原子性&#xff0c;一致性&#xff0c;隔离性和持久性。 1、原子性&#xff08;Atomicity&#xff09; 一个原子事务要么完整执行&#xff0c;要么干脆不执行。这意味着&#xff0c;工作单元中的每项任务都必须正确执行。如果有任一任务执行失败&…

MySQL事务原子性、一致性和持久性以及回滚是如何实现的?

前言 《MySQL事务详解》一文中详细讲解了事务的概念&#xff0c;包括ACID特性&#xff0c;事务并发引起的问题&#xff0c;事务的四种隔离级别。 在事务的四种特性中&#xff0c;原子性、一致性、持久性通过数据库的redo log和undo log来完成&#xff0c;redo log称为重做日志&…

InnoDB引擎--事务持久性

事务是指构成单一逻辑工作单元的操作的集合。数据库系统维护事务的ACID四个特性: 原子性:事务的所有操作在数据库中要么全部反映,要么全部不反映。一致性:事务执行前后数据库保持约束一致性和业务逻辑一致性。隔离性:在事务并发执行时,各个事务都感觉不到其他事务的存在。…

MySQL 是如何保证一致性、原子性和持久性的!

编辑&#xff1a;业余草 来源&#xff1a;https://www.xttblog.com/?p4891 今天&#xff0c;我们来简单的看一下 MySQL 的一致性、原子性和持久性问题。后面还扩展了 15 个简单的面试题&#xff0c;希望大家喜欢&#xff01; 1、Mysql怎么保证一致性的&#xff1f; OK&#xf…

MySQL InnoDB 存储引擎写入磁盘(落盘)的原理\MySQL怎么保证持久性、原子性?(MySQL中是如何实现事务提交和回滚的)\隔离性

文章目录 一、MySQL InnoDB 存储引擎写入磁盘&#xff08;落盘&#xff09;的原理一条 update 语句在写入磁盘的过程为什么必须有“两阶段提交”呢&#xff1f; binlog 的写入机制 二、MySQL怎么保证持久性、原子性?(MySQL中是如何实现事务提交和回滚的)redo log(重做日志) 如…

MySQL日志(undo log 和 redo log 实现事务的原子性/持久性/一致性)

日志的重要性 日志绝对是数据库的核心. 持久化的日志记录了各种重要的信息.数据的恢复需要依赖日志。 慢查询sql语句需要用到慢查询日志。以及错误日志中保存着mysqld数据库服务端在启动过程中发生的重大错误信息... 数据库重要组成 本质上来说是一个文件系统 (两大重要组…

MySQL究竟是如何做到持久性的?

前言 我们学习事务中&#xff0c;对于持久性&#xff08;durability&#xff09;是这样定义的&#xff1a;事务一旦提交&#xff0c;则其所有的修改将会保存到数据库当做。即使此时系统崩溃&#xff0c;修改的数据也不会丢失。同时数据库连接中&#xff0c;默认有一个参数auto…

理解事务四大特性(Transaction)——原子性、一致性、隔离性和持久性(ACID)

事务是指对系统进行的一组操作&#xff0c;为了保证系统的完整性&#xff0c;事务需要具有ACID特性&#xff0c;具体如下&#xff1a; 1. 原子性&#xff08;Atomic&#xff09; 原子性是指事务是一个不可分割的工作单位&#xff0c;事务中的操作要么都发生&#xff0c;要么都…

持久性连接和非持久性连接

HTTP连接有两种,一种为持久性连接;另一种为非持久性连接。 由于不同的HTTP版本,使用不同的方式。 在这里分析一下二者的区别: 一、非持久性连接(Nonpersistent HTTP) 特点:每个TCP连接最多允许传输一个对象 HTTP 1.0使用的非持久性连接 过程: 响应时间分析与建…

mysql事务如何保证持久性_详解MySQL事务持久性实现

所谓MySQL事务持久性就是事务一旦提交,就是永久性的,不会因为宕机等故障导致数据丢失(外力影响不保证,比如磁盘损害)。持久性是保证了MySQL数据库的高可靠性(High Reliability),而不是高可用性(Hign Availability)。 MySQL的innoDB存储引擎,使用Redo log保证了事务的持久性…

Mysql持久性的实现

1、持久性的定义 事务一旦提交&#xff0c;则其所有的修改将会保存到数据库当中。即使此时系统崩溃&#xff0c;修改的数据也不会丢失。同时数据库连接中&#xff0c;默认有一个参数autocommit1&#xff08;如果想要关掉&#xff0c;要set autocommit0,然后要手动的开启关闭&a…

数据库事务-持久性原理

持久性&#xff08;Durability&#xff09;: 事务处理结束后&#xff0c;对数据的修改就是永久的&#xff0c;即便系统故障也不会丢失。&#xff08;持久性由redo log日志来保证&#xff09; 以一个跟新语句执行流为例&#xff1a; 在存储引擎执行时&#xff0c;会先在缓存池…

MYSQL 1251

今天折腾mysql&#xff0c;&#xff0c;一直在连接的时候出现1251的报错&#xff0c;然后百度了很多方法&#xff0c;都没有办法成功&#xff0c;&#xff0c;最后折腾了好久&#xff0c;&#xff0c;终于成功了&#xff0c;进入MySQL 8.0 Command Line Clien&#xff0c;依次输…

java_1125

1。从键盘输入一个字符串 编写一个程序&#xff0c;判断输出一个字符串中大写英文字母数&#xff0c;和小写英文字母数&#xff0c;和其他非英文字母数 2. 编写一个方法&#xff0c;返回一个double类型的二维数组&#xff0c;数组中的元素通过解析字符串参数获得&#xff0c…

java_1115

定义一个接口 MediaPlayer&#xff0c;表示家庭影院的一个设备。MediaPlayer 中 包含 play()&#xff0c;stop()&#xff0c; open()三个方法&#xff0c;分别表示播放、停止和开仓功能。 MediaPlayer 有三个实现类&#xff0c;分别为&#xff1a; DVDPlayer&#xff0c;表示 …

java--Integer的128陷阱

包装类 提到128陷阱就不得先说一下包装类 1.为什么有包装类 在面向对象中&#xff0c;“一切皆对象”&#xff0c;但基本数据类型的数据不太符合这一理念&#xff0c;基本数据类型不是对象.涉及到类型之间的转化&#xff0c;数据类型之间的基本操作&#xff1b;如果都有我们…