解决页面添加锚点后跳转改变URL问题

博客讨论了前端开发中使用锚点实现页面滚动时遇到的URL变化问题,当页面刷新或返回时可能导致不期望的路由行为。为了解决这个问题,建议使用JavaScript事件监听代替a标签的href属性,通过`document.querySelector`和`scrollIntoView`方法实现锚点效果,从而避免URL被修改。这种方法确保了页面滚动功能的同时,防止了不必要的路由变化。

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

  直接奔主题,前端简单地锚点实现,把 a 标签的 href 写成想要跳到的元素的id ,比如点击 <a href="#box"></a> 页面就会自动滚动到 <div id="box"></div> 元素的位置。

  那么这样使用会产生一个现象,那就是 url 会被改变,浏览器默认的行为会将 id 放在 url 后面。比如:http://www.xxx.com#box

  此时返回上一页可能不是我们想要的路由,当页面刷新也会出席那问题

  解决的方法:

  把a标签替换掉,或者不加href,我们把要点击的按钮绑定一个点击事件:

//给想要点击的元素绑定事件并传入要跳到元素的id
//因为项目使用Vue就直接写@click
<a @click="changeHash('#box2')"></a>

//使用document.querySelector实现锚点的效果
changeHash(idName) {
    document.querySelector(idName).scrollIntoView(true);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值