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

自定义实现elementui的锚点

背景

前不久有个需求,上半部分是el-step步骤条,下半部分是一些文字说明,需要实现点击步骤条中某个步骤自定义定位到对应部分的文字说明,同时滚动内容区域的时候还要自动选中对应区域的步骤。element-ui-plus的有锚点这个组件,但是他的触发内容是三个div,我的是一个组件,所以当时就没用这个,直接就重写了。

实现:

在el-step上添加click事件

// 使用scroll来滚动到对应的内容区域
const scroll = (stepNumber: number) => {// contentRef为对应的内容区域上的refconst targetElement = contentRef.value[stepNumber];if (targetElement) {nextTick(() => {targetElement.scrollIntoView({behavior: 'smooth',block: 'start',});});}
};

使用html5的API - IntersectionObserver来实现监听滚动区域,然后给对应区域的step赋值。

在onmounted中调用方法去new IntersectionObserver();

onMounted(() => {initObserver();
});// 监听滚动
const initObserver = () => {const observer = new IntersectionObserver((entries) => {entries.forEach((entry) => {if (entry.isIntersecting) {const index = contentRef.value.findIndex((el: any) => el === entry.target,);// activeStep就是el-steps上绑定的:activeif (index !== -1) {activeStep.value = index;}}});},// rootRef就是对应滚动内容的父容器的ref{root: rootRef.value, // 监听tip里的视口threshold: 0.9, // 90%进入视图时才触发},);contentRef.value.forEach((el: any) => observer.observe(el));
};

html结构

    <div><el-steps :active="activeStep"><el-stepv-for="(item, index) in steps":key="index":title="item.title"@click.native="scroll(index)"></el-step></el-steps></div><div ref="rootRef"><divv-for="(img, index) in imgs":key="index"class="imgContainer"ref="contentRef"><img :src="img.src"/></div></div>

http://www.xdnf.cn/news/225739.html

相关文章:

  • hadoop伪分布式模式
  • 【操作系统】进程和线程的区别
  • Dify 获取天气数据并以echarts图表显示
  • SPSS PCA+判别分析
  • Axure疑难杂症:全局变量跨页面赋值、中继器交互(玩转全局变量)
  • 4:QT联合HALCON编程—机器人二次程序抓取开发(九点标定)
  • [特殊字符] Spring Cloud 微服务配置统一管理:基于 Nacos 的最佳实践详解
  • windows远程服务器数据库的搭建和远程访问(Mysql忘记密码通过Navicat连接记录解密密码)
  • Android学习总结之设计场景题
  • 当插入排序遇上“凌波微步“——希尔排序的奇幻漂流
  • 单体项目到微服务的架构演变与K8s发展是否会代替微服务
  • 华为云汪维敏:AI赋能应用现代化,加速金融生产力跃升
  • “BYD SHENZHEN”启运,搭载超7000台比亚迪新能源车前往巴西
  • 金融风控的“天眼”:遥感技术的创新应用
  • H.264添加 SEI 信息技术文档
  • MySQL bin目录下的可执行文件
  • 零基础学Java——第八章:Java网络编程(下)
  • 数据资产管理与AI融合:物联网时代的新征程
  • 【KWDB 创作者计划】_存储引擎深度解析
  • 核心技能:ArcGIS洪水灾害普查、风险评估及淹没制图
  • MT6765 android上层获取VCM lens位置
  • macOS 安装了Docker Desktop版终端docker 命令没办法使用
  • ‌阿里云dns服务器不可用怎么办?dns可以随便改吗?
  • Dockerfile最佳实践:构建高效、安全的容器镜像
  • AI生成Flutter UI代码实践(一)
  • 学习记录:DAY21
  • EasyRTC嵌入式音视频实时通话SDK技术,打造低延迟、高安全的远程技术支持
  • 【JavaEE】网络原理之初识(1.0)
  • M1 Mac pip3 install错误记录
  • 算法基础学习|03整数二分