vue获取元素offsetTop,mounted获取不到offsetTop,获取元素距离页面顶边距离

记录一下开发过程中遇到的坑,今天想做一个功能,当我评论完之后,页面跳到评论区顶部,于是就要获取到评论区距离页面顶部的距离,需要循环获取offsetTop来实现,但是在mounted阶段是无论如何都获取不到offsetParent的,不管是$nextTick、setTimeout(f,0)都获取不到

原因:mounted并不代表渲染完全结束,mounted刚开始时组件被孤立,没有放到文档当中

解决:通过beforeUpdate阶段获取

 通过官方的这张图片知道beforeUpdate阶段一定是mounted已经执行结束,在这个阶段能够正常获取到dom,如果没有触发beforeUpdate在data里加一个值手动修改触发

beforeUpdate() {
    var distance = 0
    var el_now = this.$refs.comment
    while (el_now.offsetParent) {
        distance += el_now.offsetTop
        el_now = el_now.offsetParent
    }
    this.$store.state.comment_offsetTop = distance
}

随后用老办法获取距离顶边的距离然后存到vuex中来实现跨多级组件传递

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值