当前位置: 首页 > 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>

相关文章:

  • StarRocks Lakehouse 如何重构大数据架构?
  • 腾讯云服务器性能提升全栈指南(2025版)
  • 爬虫逆向思维
  • Azure Monitor 实战指南:全方位监控应用与基础设施
  • ubuntu 部署moodle
  • 动态规划降低空间复杂度例题及简化
  • Dockerfile最佳实践:构建高效、安全的容器镜像
  • vue3 打字机效果
  • 【SAM2代码解析】数据集处理3--混合数据加载器(DataLoader)
  • 集成产品开发(IPD)核心框架:阶段门流程设计与跨部门协同实施要点
  • Linux 检查口令策略设置是否符合复杂度要求
  • kubernetes》》k8s》》Service 、Ingress 区别
  • Vue+tdesign t-input-number 设置长度和显示X号
  • [论文精读]Agent综述—— A survey on large language model based autonomous agents
  • Sigmoid函数简介及其Python实现
  • SQL命令二:SQL 高级查询与特殊算法
  • 《JDK 1.7 vs JDK 1.8 ConcurrentHashMap 深度对比与实战解析》
  • EWM 流程全自动化实现方法
  • MySQL explain
  • 《可信数据空间 技术架构》技术文件正式发布
  • 向左繁华都市,向右和美乡村,嘉兴如何打造城乡融合发展样本
  • 解放日报:硬科企业由此迈出“市场第一步”
  • 国际油价重挫!美股道指连跌三月,啥情况?
  • 北方旱情持续,水利部:大中型灌区春灌总体有保障
  • 滨江集团:一季度营收225.07亿元,净利润9.75亿元
  • 李乐成任工业和信息化部部长