A标签锚点跳转不改变路由地址

30 篇文章 0 订阅
15 篇文章 0 订阅

奥利给

原因,我们经常需要用a标签来做锚点跳转,但是尴尬的就是跳转后地址栏的url会改变,起初我也没注意。(讲真,这个有时候又好处,有时候有坏处。坏处就是改变了路由,就很不优雅,好处是如果用户把这个链接分享出去他可以跳转到之前用户停留的锚点)

为什么要用a标签跳转啊,我用别的不行吗?当然可以,但是我们得考虑如果js不运行了,起码还有原始的锚点跳转做保证吧。

原理就是js查找a标签指向的锚点,但是我们不可能一个一个写吧,不然很不优雅。所以我们就封装寻找所有a标签,再判断指向是否含有#号,如果有则的添加点击事件。调用scroll函数滚到指向的元素。但是我们发现地址栏url还是改变了,那证明a标签的跳转还是存在,那我们就把a标签的默认点击事件去除掉。

完美,优雅。

精益求精的小伙伴还可以加一个时间函数来缓慢移动。

这样我们只需要在页面中引入改js即可,且不用注意什么,正常写我们的前端代码即可。

(function(){
	var allJump=[];
	var allA=document.querySelectorAll("a");// 获取所有a标签
	allA.forEach((ele,index)=>{
		// console.log(index);
		// console.log(ele.href);
		if(ele.href.search("#")>12){
			allJump.push(ele);// 判断a标签是否含有#	
		}
	})
	// console.log(allJump);
	allJump.forEach((ele)=>{
		ele.addEventListener("click",(e)=>{
			// 首先解析出href
			e.preventDefault();// 这个非常关键
			var jumpTarget=ele.href.split("#")[1]
			if(jumpTarget){
				// console.log(123);
				var targaetEle=document.querySelector("#"+jumpTarget);
				h=targaetEle.offsetTop;
				window.scrollTo(0,h);
				// console.log(jumpTarget);
			}else{
				window.scrollTo(0,0);
			}
		});			
		// return false;
	})
}).call()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Vue中解决a标签锚点跳转位置上下偏移的方法有很多种,下面我将介绍几种常用的方法。 1. 使用Vue Router的滚动行为功能。在Vue Router中,可以通过设置scrollBehavior属性来控制页面滚动行为。可以通过给目标路由设置一个滚动偏移量来实现锚点跳转时的位置偏移。例如: ```javascript const router = new VueRouter({ mode: 'hash', // 或者其他模式 ... scrollBehavior(to, from, savedPosition) { if (to.hash) { return { selector: to.hash, offset: { x: 0, y: 100 } // 设置纵向偏移量为100px } } } }) ``` 2. 在目标元素上通过ref属性标记,并通过Vue的$refs来操作元素。在Vue的模板中,可以使用ref属性来标记元素,然后可以通过Vue实例的$refs属性来获取到元素的实例,并进行操作。例如: ```html <!-- 模板 --> <a href="#target" @click="scrollToTarget">跳转到目标</a> ... <div ref="target" id="target">目标元素</div> <!-- Vue 实例中的方法 --> methods: { scrollToTarget() { const targetElement = this.$refs.target // 进行滚动操作,可以通过scrollTop属性或者其他滚动方法来控制滚动位置,再加上偏移量即可 } } ``` 3. 使用第三方库来实现滚动行为。除了Vue Router,还有一些第三方库可以用于处理滚动行为,如vue-scrollto、vue-scroll-behavior等。这些库提供了方便的API,可以轻松地控制滚动位置和偏移量。可以根据具体需求选择合适的库使用。 总的来说,以上是几种常见的在Vue中解决a标签锚点跳转位置上下偏移的方法。具体的使用方式可以根据实际需求选择合适的方法来实现相应的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

圈点Studio

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

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

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

打赏作者

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

抵扣说明:

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

余额充值