vue 实现a标签定位_vue中利用a的href属性配合dom的id实现锚点定位行不通

本文介绍了如何在Vue项目中使用Vue Router时实现锚点定位,通过模拟滚动高度调整而非传统a标签,利用DOM元素的offsetTop属性动态获取目标位置。分享了一种在Vue环境下解决锚点跳转问题的方法和实例代码。
摘要由CSDN通过智能技术生成

最近写一个vue的项目,有一个地方需要使用锚点定位。

html中传统锚点定位方法就是利用a标签的href属性值与dom元素的id值实现的,例如:

早年经历

早年经历

结果:点击a,跳转到h3。

在这个项目中,落落使用的是vue-router实现的页面跳转。因此,如果按照传统方法进行锚点定位,直接就跳转到了一个新的页面,而不是预期中指定的dom元素。开始的时候落落都要怀疑自己是不是锚点定位的方式错了。后来查阅文档发现,传统的锚点定位方式在使用了vue-router时是行不通的哦。

有解决办法吗?必须滴!

仔细观察不难发现,锚点定位的本质就是修改容器的滚动高度。

所以呢,锚点定位可以模拟成修改页面卷动值,在chrome浏览器中是document.body.scrollTop,在firefox浏览器中是document.documentElement.scrollTop。那么这个值要设置成多少比较合适呢?给一个确切的数字吗?可以是可以,但是如果页面是动态的呢?显然不是最理想的。

js中有一个关于定位的值——offsetTop。

假设obj 是html中的一个控件,obj.offsetTop 指的是 obj 距离上方或上层控件的位置,整型,单位像素。

所以呢,这个卷动值完全可以通过obj.offsetTop来获取。

例:

//#type就是要跳转到的dom元素,#+dom元素的id属性值

游戏

methods:{

goAnchor:function(type) {

var anchor = this.$el.querySelector("#type")

// chrome

document.body.scrollTop = anchor.offsetTop;

// firefox

document.documentElement.scrollTop = anchor.offsetTop;

}

}

通过这种方法,落落的问题成功解决了。

在查阅文档时,发现也有其它方法,个人觉得这个更好理解,实现起来更简单。_所以就跟大家分享一下。(#.#)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值