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

锚点跳转跟踪#

 一、html

<div ref="computingref"><section id="section1"> </section><section id="section2"> </section><section id="section3"> </section>
</div><div class="nav-list" v-if="activeHash"><!-- <el-tabs:tab-position="'right'"v-model="activeHash"@tab-change="scrollTo"><el-tab-panev-for="(item, index) in anchorList":key="index":label="item.label" :name="item.value"></el-tab-pane></el-tabs> --><el-timeline style="width: 245px"><el-timeline-itemv-for="(activity, index) in anchorList":key="index":type="activeHash == activity.value?'primary':''":hollow="activeHash != activity.value"><spanclass="timelineclass":style="activeHash == activity.value?'color:#eb682c':''"@click="scrollTo(activity.value)">{{ activity.label }}</span></el-timeline-item></el-timeline></div>

二、js

// 常量定义
const computingref = ref();
const anchorList = ref([{label:'xxxxx',value:'#section1'},{label:'xxxxxxx',value:'#section2'},{label:'xxxxxxxxxxx',value:'#section3'}
])// 响应式数据
const activeHash = ref('');
const offsets = ref([]);// 计算锚点偏移量
const calculateOffsets = () => {offsets.value = anchorList.value.map(e=>{const element = document.querySelector(e.value)return element.offsetTop  - 300 // 上偏移多少})
};// 更新激活的 hash
const updateActiveHash = () => {const scrollTop = computingref.value?.scrollTop || 0const findtops = offsets.value.filter(offset => scrollTop > offset);activeHash.value = findtops.length > 0 ? `#section${findtops.length}` : '';
};// 滚动到指定锚点
const scrollTo = (hash) => {activeHash.value = hashconst target = document.querySelector(hash);if (target) {const offset = target.offsetTop// window.scrollTo(0, offset);if(computingref.value) computingref.value.scrollTop = offset}
};const handleContainerScroll = () => {updateActiveHash()
}// 生命周期钩子
onMounted(() => {nextTick(() => {calculateOffsets();});
});

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

相关文章:

  • Web-CSS入门
  • ci/cd全流程实操
  • 2025年全国青少年信息素养大赛复赛集训(2):寻找250(题目及解析)
  • Perl测试起步:从零到精通的完整指南
  • 【Python】【OCR识别】 提取图片文字并根据内容智能分类存储
  • C#运算符
  • 大语言模型与多模态模型比较
  • 【笔记】cri-docker.service和containerd
  • 特斯拉虚拟电厂:能源互联网时代的分布式革命
  • [IMX] 01.IVT 表长度计算
  • 考研408《计算机组成原理》复习笔记,第二章(2)数值数据的表示(浮点数篇)
  • 【springboot项目服务假死、内存溢出问题排查】
  • shell-awk
  • TVS管用万用表测量方法详解(含二极管档使用指南)
  • 【微信小程序】webp资源上传失败
  • 告别碎片化!MCP 带来 AI Agent 开发生态的革命性突破
  • Qt之QMessageBox
  • 【RabbitMQ】实现RPC通信的完整指南
  • 浅谈算法中的贪心策略:从直觉到策略的思维跨越
  • ios打包ipa获取证书和打包创建经验分享
  • (独家)SAP CO模块中 销售发票对应的Cost Document中的PSG对象是什么东东??
  • leetcode0621. 任务调度器-medium
  • 论QT6多线程技术
  • linux-配置定时任务
  • 一道canvas算法题(看过记录下)
  • js在浏览器执行原理
  • 【Linux】Linux安装并配置mysql
  • vue基本介绍
  • H.264/AVC 变换量化编码核心技术拆解
  • C#语言中 (元,组) 的发展史