【vue3】锚点定位(两种实现方式)

2023-11-03

方法1: 利用ref实现锚点定位

前面的废话文学

说到锚点定位,很多人第一时间会想到 a标签。但是a标签实现的锚点定位并不是那么的完美,特别是在hash模式下。
对我而言,vue3的ref就实在是太完美了。

解决问题的方法

很多情况下,我们会循环一定格式的数据对页面进行渲染,然后再有锚点定位的需求。那么我们该怎么去做呢?

1. setup函数内定义变量

const eleRefs = ref([]);
const setRef = (el) => {
  if (el) {
    eleRefs.value.push(el);
  }
};
//获取变量值
console.log(eleRefs.value[0])

2. 动态获取ref并存放到eleRefs数组当中

 <template v-for="(item, index) in data.catalogue">
      <div class="part-cont" :id="'part' + item.id" :ref="setRef">
        <div class="part-box">
          <template v-for="(j, k) in item.picUrls" :key="k">
            <img :src="j" alt="">
          </template>
        </div>
        <template v-for="(i, ind) in item.children">
          <div :id="'part' + i.id" :ref="setRef" class="part-box">
            <template v-for="(j, k) in i.picUrls" :key="k">
              <img :src="j" alt="">
            </template>
          </div>
        </template>
      </div>
    </template>

3. 滚动到特定的ref位置

 eleRefs.value[0].scrollIntoView({ block: 'start', behavior: 'smooth' });

over

在这里插入图片描述

方法2: 利用a标签实现锚点定位(滚动响应)

第二次的废话文学

小编想了,还是想把a标签的锚点定位也记录一下。
无论是PC端、移动端,还是APP、小程序,只要涉及长篇文章/画册、tab切换等的都可能会有锚点定位的需求。我们前端就需要做到点击锚点能定位,滚动页面能响应。

解决问题的方法

1. a标签 定位到指定位置

// 锚记
	<a href="#site">点击此处到目标位置</a>
	
// 锚记位置
	<div id="site"></div>

2.滚动响应

监听滚动事件

let currSite = document.documentElement.scrollTop || document.body.scrollTop // document.documentElement.scrollTop  // 当前滚动位置
let windowHeight =window.innerHeight||document.documentElement.clientHeight || document.body.clientHeight  // 视口高度
 // 获取元素信息
 let ele = document.getElementById('site')
 let eleTop = ele.offsetTop // 元素距页面顶部高度(头部)
 let eleHeight = ele.clientHeight  // 元素高度
  let eleBot = eleHeight + eleTop  // 元素底部距页面顶部高度(尾部)
/* 判断元素是否在可视区域:
	1.元素内嵌可视区域(首尾均在可视区域内)
	2.元素外嵌可视区域(首位均在可视区域外)
	3.元素头部在可视区域内,尾部在可视区域外
*/
if(eleTop >= currSite &&eleTop < currSite + windowHeight || (eleBot  > currSite &&eleBot < currSite + windowHeight) || (eleTop e < currSite && eleBot > currSite + windowHeight)){
	 // 元素在可视区域
}else{
	// 元素不在可视区域
}

over

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【vue3】锚点定位(两种实现方式) 的相关文章

随机推荐

  • 关于Incapsula reese84加密的特征研究

    最近研究了下reese84的加密算法 基本上两个参数的加密 utmvc和token 因为nodejs调用会有内存问题 没有采用补环境的方式解决 用python扣的算法 1 utmvc参数的生成是一个ob混淆 ast处理之后调试难度不是很大
  • tensorflow学习笔记(3)——基础(三)——TF训练和变量

    5 tensorflow实现神经网络 1 TF游乐场及神经网络简介 TF游乐场 http playground tensorflow org 略 使用神经网络解决分类问题的主要步骤 1 提取特征向量作为输入 2 定义神经网络结构 得到输出
  • vue3+ts+mock

    项目地址 使用vite创建的vue3 ts项目 集成了mock vuex 项目截图 修改主题 项目克隆及运行 克隆 git clone https gitee com liwensa vue3 tsmock git 进入项目运行 npm i
  • 深度学习中常见的损失函数

    目录 一 损失函数的定义 二 常见的回归损失函数 1 L1 LOSS MAE平均绝对误差 2 L2 LOSS MSE均方差误差 3 Smooth L1 LOSS 4 IOU LOSS及其各种变种 三 常见的分类损失函数 1 交叉熵损失函数
  • Linux删除含有特殊符号文件名的文件

    1 使用 ls i 查处该文件的 inode 号 假设为123 2 使用find命令删除 rm find inum 123 如果是目录 rm rvf find inum 123
  • Going deeper with convolutions(InceptionNet)

    进一步深化卷积 Abstract 摘要 我们提出了一个代号为Inception的深度卷积神经网络架构 该架构负责设置2014年ImageNet大规模视觉识别挑战赛 ILSVRC14 中用于分类和检测的新技术 该体系结构的主要标志是提高了网络
  • 一个例子理解梯度下降法(附梯度下降法与最小二乘法比较)

    一个例子理解梯度下降法 例子描述 梯度下降法简介 基于python3 matplotlib的实现代码 梯度下降法实现 最小二乘法实现 比较结果 总结 最近听课时 AI导论老师留下了一个简单的线性回归例子 这个例子属于单变量线性回归 可以用梯
  • Ajax入门

    文章目录 axios体验 axios 查询参数 常用请求方法 数据提交 axios错误处理 axios体验 引入axios库 使用axios语法 axios url 目标资源地址 then result gt 对服务器返回的数据做后续处理
  • 识别图片中曲线并获取其坐标

    识别图片中曲线并获取其坐标 github主页 https github com Taot chen 有时候需要用到一些数据库里面曲线图的数据 进行进一步的变换处理 但是很多时候都只有图片 没有数据 基于这个问题 给出了以下算法 思路 1 通
  • live555 移植

    转自 http blog csdn net lawishere article details 8182952 Live555 是一个为跨平台的C 开源项目 它实现了RTP RTCP RTSP SIP等的支持 并且相对于其他的流媒体服务器是
  • 记一次Ubuntu PHP-SSH2扩展安装

    要部署 PHP SSH2的项目 按照网上教程来 发现操作十分繁琐 于是就去apt找有没有相关的安装 首先 更新apt源 apt update 再 进行libssh2的安装 apt get install libssh2 1 libssh2
  • Mat 变换错误排查

    背景 想执行一个平移变换 try cv Mat original points cv Mat
  • 深度学习中:epoch、batch size和iterations之间的关系

    机器学习中 epoch batchsize和iterations之间的关系 在深度学习中 epoch batchsize和iterations是在训练模型时 一定用到的一些概念 那么分别是什么意思呢 首先 为什么会用到以上概念 是因为 梯度
  • 算法题——洛谷2

    P8723 乘法表 题目描述 九九乘法表是学习乘法时必须要掌握的 在不同进制数下 需要不同的乘法表 例如 四进制下的乘法表如下所示 1 1 1 2 1 2 2 2 10 3 1 3 3 2 12 3 3 21 请注意 乘法表中两个数相乘的顺
  • 清理memcached缓存

    清理memcached缓存 首先telnet连接memcache 然后 flush all 清除缓存 最后quit退出 root admin telnet 192 168 101 51 12000 Trying 10 118 180 58
  • AES+BASE64双重加密,解密 私钥,向量解析

    使用AES加密 再使用base64编码加密 具体细节请看注释 加密 param sSrc 加密的明文 param sKey 秘钥 param iv 向量 16 bytes return throws Exception public sta
  • 如何用最短的时间理解一项数字技术?推荐这7本最新的白皮书(大数据、云原生、区块链、联邦学习等,附下载)...

    正文开始 信息技术 数据被国家认定为新的生产要素 对于数据从业者来说是时代赋予的巨大红利 但也要认识到 数据要素要发挥出价值 离不开数据要素市场的培育 更依赖于信息技术 大数据 人工智能 区块链 云计算 边缘计算 物联网等 的加持 为了抓住
  • ML算法——梯度下降随笔【机器学习】

    文章目录 2 1 梯度下降 2 1 梯度下降 梯度下降如何帮助参数优化 梯度下降是一种用于参数优化的常见方法 它的基本思想是通过迭代地更新参数 以减小损失函数 代价函数的值 从而找到一个最优解 梯度方向 向右 正向 向左 反方向 梯度方向是
  • 《机器学习(周志华)》 西瓜数据集3.0(含规范化以后数据)

    书上的一个常用数据集 plain view plain copy 编号 色泽 根蒂 敲声 纹理 脐部 触感 密度 含糖率 好瓜 1 青绿 蜷缩 浊响 清晰 凹陷 硬滑 0 697 0 46 是 2 乌黑 蜷缩 沉闷 清晰 凹陷 硬滑 0 7
  • 【vue3】锚点定位(两种实现方式)

    方法1 利用ref实现锚点定位 前面的废话文学 说到锚点定位 很多人第一时间会想到 a标签 但是a标签实现的锚点定位并不是那么的完美 特别是在hash模式下 对我而言 vue3的ref就实在是太完美了 解决问题的方法 很多情况下 我们会循环