锚点设置的几种方法(可以不改变url)

本文详细介绍四种实现页面内锚点导航的方法:使用a标签、DOM操作、监听浏览器高度及offsetTop属性。通过这些方法,可以轻松实现在长网页或首页中的快速定位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所谓锚点,就是设置同一页面的快捷点,通过点击固定在屏幕上的本页导航栏,从而迅速跳转到页面的某个位置。
锚点的运用十分广泛,一般出现在某个网站的首页,或者内容较多的网页中
在这里插入图片描述
介绍几种实现锚点的方式

实现

第一种 通过a标签设置锚点(会改变当前地址的路由!!!)

a标签除了跳转页面以外,还可以设置锚点,通过给a标签的href属性,给对应的元素绑定同样的id值,就可以同一页面内的跳跃。
对应的元素标签也可以是a标签,给a标签设置对应的name值,实现同一页面内的跳跃。
上代码

//快捷导航设置
//a标签的href属性,必须带#,点击a标签后,产生跳跃
<li><a href="#miao">去找喵星人</a></li>
<li><a href="#wang">去找汪星人</a></li>

//需要跳跃的地方
//要跳跃的地方,通过给标签绑定id属性,没有#
<h3 id="miao">喵星人基地</h3><!--设置锚点方法2-->

<p>喵喵喵~</p>

<p>喵喵喵~</p>

<p>喵喵喵~</p>

<p>喵喵喵~</p>

<p>喵喵喵~</p>

<p>喵喵喵~</p>

// 只有a标签可以设置name属性,不带# 与其他标签绑定id效果一致
<a name="wang"></a>

<p>汪汪汪~</p>

<p>汪汪汪~</p>

<p>汪汪汪~</p>

<p>汪汪汪~</p>

<p>汪汪汪~</p>

<p>汪汪汪~</p>

第二种 通过DOM操作,事件控制跳转(‘跳转的位置受限,只能顶部对齐或者底部对齐,切换无动画,生硬’)

设置导航标签,绑定点击事件,在事件里,选中想要跳转的元素,执行scrollIntoView() 实现页面内的跳转。

vue代码

//快捷导航
<div @click="onToYear">
	点击跳转
</div>

//想要跳转的地方
<div id="year">锚点设置</div>
  
methods: {
	onToYear: function () {
	const a = document.getElementById("year");
	a.scrollIntoView();
},
}

这个方法的兼容性还是可以的
在这里插入图片描述

第三种 监听浏览器当前高度和设置跳转高度(较复杂,但更自由)

通过js监听页面当前滚动条的高度,点击不同的导航标签后,通过控制浏览器的滚动条高度,实现快捷导航,展示不同内容的目的。

逻辑相比前两种方式稍微复杂一些,但更加灵活,可以自由控制。

实现方式
首先设置锚点元素。 其次,在js代码中将设置的锚点元素在当前页面的高度获取到,多个锚点元素的高度用一个数组进行保存。

其次设置导航元素。每一个导航点点击之后,跳跃到对应的锚点元素的高度,之前获取的锚点元素页面高度的数组就有用了。

第四种,获取要跳转的某个元素的offsetTop

<div v-for="item in showQuestionList" :id="`paper-question-${item.order}`">
   这是很多元素
</div>
<div
    v-for="item in showQuestionList"
    :key="item.order"
    @click="onClickCardItem(item.order)"
>
   {{ item.order }}
</div>

onClickCardItem(order) {
 const targetDom = document.getElementById(`paper-question-${order}`);
      const top = targetDom?.offsetTop;
      document.documentElement.scrollTop = top;
      document.body.scrollTop = top;
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可缺不可滥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值