前端锚点 点击 滑动双向绑定

一. 页面样式

二. 代码

<div class="flexBox">
	<div class="mdDiv" v-for="(item,index) in tabList" :key="index" :class="nowChoose==index?'choosed':''"   @click="jumpMD(index, item.id)">
		{{item.name}}
	</div>
</div>
<div class="mainDiv" @scroll="onscroll">
	<div id="intro">
		课程简介
	</div>
	<div id="bright">
		课程简介
	</div>
	<div id="formAndTime">
		培训形式与时间
	</div>
	<div id="content">
		课程内容
	</div>
</div>
import { ref, nextTick } from "vue"
nextTick(() =>{
	getTop() // 在nextTick中获取dom元素
})
const tabList = ref([
	{ name: "课程简介",id:"intro" },
	{ name: "课程亮点",id:"bright" },
	{ name: "培训形式与时间",id:"formAndTime" },
	{ name: "课程内容",id:"content" },
  ])

const nowChoose = ref(0)
const isTap = ref(false) // 是否为点击滑动
const jumpMD = (index, id) =>{
	isTap.value = true // 点击滑动  下标直接变
	nowChoose.value= index
	document.getElementById(id).scrollIntoView({behavior: "smooth"})
	setTimeout(() =>{
		isTap.value = false 
	}, 300)
}
const scrollList = [] // 几个锚点距离父顶部的距离
const getTop = () =>{ // 获取锚点div到父级的距离
	scrollList.value = []
	tabList.value.forEach(item =>{
		scrollList.value.push(document.getElementById(item.id).offsetTop)
	})
}
const onscroll = (e) =>{ // 监听页面滚动
	if (!isTap.value) { // 非点击滑动走这里
		if (scrollList.value.length) {
			scrollList.value.forEach((item, index) =>{
				if (e.target.scrollTop + 60 > item) {
					nowChoose.value = index
				}
			})
		}
	}
	
}

三. 易错点讲解

1. 获取子元素到父元素最上方的高
document.getElementById(item.id).offsetTop

在父元素上一定要加

position: relative;

否则就获取到页面顶部的距离了

2. 点击滚动 跟 滚动切换要区分开

监听滚动的事件是一直触发的  我们点击的时候就判断一下 不走滚动里的  当然  滚动也不走监听里的  不然会鬼畜哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/727881.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

简单分析一下地产行业使用堡垒机的必要性-行云管家

地产行业&#xff0c;一个关系民生的行业&#xff0c;一个与大家生活密不可分的行业。随着信息技术的快速发展&#xff0c;以及数字化转型的要求&#xff0c;以及地产行业业务迅猛发展&#xff0c;如何保障数据安全以及网络安全至关重要。在这种背景下&#xff0c;使用堡垒机就…

VBA基础知识点总结

VBA教程 VBScript教程 数据类型 数字数据类型 非数字数据类型 变量&常量 可以通过Dim、Public或Private语句声明变量。 变量语法&#xff1a;Dim <<variable_name>> As <<variable_type>>&#xff08;需要在使用它们之前声明&#xff09; 常量语…

全球AI新闻速递6.20

1.国家药监局综合司&#xff1a;关于印发药品监管人工智能典型应用场景清单的通知。 2.Canalys&#xff1a;预计今年全球 AI 手机市场份额达 16%。 3.Adobe Acrobat 升级 AI 技能&#xff1a;文生图、梳理信息等。 4.中国科大人形机器人研究院揭牌。 5.华为官方预告&#x…

对30年国债利率破2.5%的复盘反思

短期看&#xff0c;以月为维度&#xff0c;长端和超长端利率依然具有较强的向下突破的惯性&#xff1b;中期看&#xff0c;以季为维度&#xff0c;长端依然面临向下赔率不足的约束&#xff0c;但调整需要多重利空共振的契机。 短期看多&#xff0c;逢高配置”的四点逻辑 逻辑一…

四川赤橙宏海商务信息咨询有限公司引领抖音电商潮流

在当今数字化浪潮下&#xff0c;电商行业蓬勃发展&#xff0c;抖音电商作为新兴力量&#xff0c;正以其独特的魅力吸引着越来越多的商家和消费者。四川赤橙宏海商务信息咨询有限公司&#xff0c;作为抖音电商服务领域的佼佼者&#xff0c;凭借其专业的团队和丰富的经验&#xf…

基于SpringBoot+Vue北部湾地区助农平台设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

系统学习PLC

1.OB组织块 程序循环 PC ob1执行一次 ob123也执行一次 是 statup是程序启动的是第一个周期先执行starup&#xff08;0b100&#xff09;然后在执行ob1和0b123.这二个循环&#xff0c;周期执行这二个循环。1000是1s 2.DB块 建立指定数据块可以直接建立自己喜欢的类型 3.FB与…

【维护服务器安全,如何应对恶意的威胁行为?】

随着互联网的迅猛发展&#xff0c;网络服务器成为现代社会中不可或缺的基础设施。然而&#xff0c;恶意攻击行为也日益猖獗&#xff0c;技术不断升级&#xff0c;给网络服务器的安全带来了严峻挑战。下面德迅云安全就分享一些常见的危害服务器安全的行为&#xff0c;和相应的应…

什么是嵌入式,单片机又是什么,两者有什么关联又有什么区别?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;从科普的角度&#xff0c;…

看完再买不后悔!希喂、小米、霍尼韦尔宠物空气净化器性价比比拼

在忙碌的工作之余&#xff0c;养一只猫真的能治愈一切的不快&#xff0c;让我们的心灵得到片刻的宁静。然而&#xff0c;这份宁静背后&#xff0c;却隐藏着一些不易察觉的烦恼——猫浮毛和异味。 猫浮毛&#xff0c;这个看似微不足道的小问题&#xff0c;实则给许多宠物主人带…

如何在MySql数据库中以经纬度进行查询

要在数据库中以经纬度进行查询&#xff0c;特别是针对MySQL数据库&#xff0c;你可以遵循以下步骤来实现基于地理位置的查询&#xff1a; 1. 数据表设计 首先&#xff0c;你需要设计一个数据表来存储地理位置信息。可以使用POINT类型来直接存储经纬度坐标&#xff0c;或者分别…

家用洗地机哪个品牌耐用?推荐这四款清洁力强的机型

近两年智能家庭清洁产品的快速崛起&#xff0c;典型代表就是家用洗地机。它集合吸尘、扫地、洗地、消杀等功能为一体&#xff0c;给人们生活带来了很多的便利&#xff0c;但随着洗地机的普及&#xff0c;市场上的机型也越来越多&#xff0c;让很多新手购机的朋友们无法快速下决…

视频监控平台功能:国外的硬盘录像机NVR通过ISUP协议(原ehome协议)接入AS-V1000视频平台

目录 一、背景说明 二、ISUP协议介绍 1、海康ISUP协议概述 2、ISUP协议支持主码流和子码流切换 &#xff08;1&#xff09;灵活配置和个性化 &#xff08;2&#xff09;适应不同网络带宽&#xff0c;提高使用体验 3、海康ehome相关文章 三、ISUP协议接入说明 1、平台侧…

使用 Python 进行测试(5)测试的类型

总结 和我一起唱&#xff01; 冒烟测试&#xff0c;让你快速失败&#xff1b; 回归测试&#xff0c;不打破过去&#xff1b; 健全性检查&#xff0c;保留所拥有&#xff1b; 集成测试&#xff0c;处理副作用&#xff1b; 端到端&#xff0c;永无尽头&#xff01; 回测&#xf…

C++基础知识——命名空间

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;Yan. yan. 文章目录 1、什么是命名空间2、命名空间的作用3、如何定义命名…

FastAPI 作为H5中流式输出的后端

FastAPI 作为H5中流式输出的后端 最近大家都在玩LLM&#xff0c;我也凑了热闹&#xff0c;简单实现了一个本地LLM应用&#xff0c;分享给大家&#xff0c;百分百可以用哦&#xff5e;^ - ^ 先介绍下我使用的三种工具&#xff1a; Ollama&#xff1a;一个免费的开源框架&…

微观时空结构和虚数单位的关系

回顾虚数单位的定义&#xff0c; 其中我们把称为周期&#xff08;的绝大部分&#xff09;&#xff0c;称为微分&#xff0c;0称为原点或者起点&#xff08;意味着新周期的开始&#xff09;&#xff0c;由此我们用序数的概念反过来构建了基数的概念。 周期和单位显然具有倍数关…

日本立法强制苹果开放第三方应用商店

近日&#xff0c;苹果生态系统最坚固的垄断围墙在亚洲首次被突破&#xff0c;日本议会通过了名为《促进特定智能手机软件竞争法》的新法案&#xff0c;要求苹果和谷歌公司允许第三方应用商店并允许第三方开发者使用iPhone的NFC芯片进行支付&#xff0c;如果不遵守规定&#xff…

python学习笔记-09

面向对象编程-中 面向对象三大特征&#xff1a;封装、继承、多态。 封装&#xff1a;把内容封装起来便于后面的使用。对于封装来讲&#xff0c;就是使用__init__方法将内容封装道对象中&#xff0c;然后通过对象直接或者self获取被封装的内容。 继承&#xff1a;子继承父的属…

node + selenium-webdriver 进行Web自动化测试

1、环境安装 nodejs安装 webdriver安装,安装各浏览器的驱动,通过各浏览器的驱动程序,操作浏览器。 chrome 驱动安装 每个版本的浏览器用到的webdriver不同。可以通过chrome右上角-> 帮助 -> 关于 Chrome 查看当前版本。 chromedriver下载地址和chromedriver与chrome之…