【Vue3】vue3通过ref获取元素离顶部的距离

vue3通过ref获取元素离顶部的距离

vue3版本 ^3.2.45

  • [ref].value.$el.getBoundingClientRect().top
    • 通过ref获取元素。
    • 使用 getBoundingClientRect().top 获取离顶部的距离

homeView.vue

<div ref="mTab" >........</div>
<script>
import { ref } from 'vue';

export default {
  name: 'home',
  setup() {
    const mTab = ref(null)

//....

  console.log(mTab.value.$el.getBoundingClientRect().top);


  //.....
    return {
      mTab,
    };
  },
}
</script>

效果图

在这里插入图片描述

### Vue3获取页面元素相对于顶部距离Vue3 应用程序中,可以通过多种方式来计算并获得页面元素相对于文档顶部距离。一种常用的方法是利用 JavaScript 原生属性 `offsetTop` 结合 `scrollTop` 来实现这一目的。 对于单个组件内的操作,可以使用 `$refs` 引用来访问特定的 DOM 元素,并通过该引用调用上述提到的属性: ```javascript // 组件模板部分定义了一个 ref 属性关联到目标元素上 <template> <div ref="targetElement"></div> </template> <script setup> import { onMounted, ref } from &#39;vue&#39; const targetElement = ref(null) onMounted(() => { const elementDistanceFromTop = targetElement.value.offsetTop - document.documentElement.scrollTop; console.log(&#39;距离顶部高度:&#39;, elementDistanceFromTop); }) </script> ``` 另一种更为精确的方式则是采用 `getBoundingClientRect()` 方法,它返回一个矩形对象提供有关元素大小及其位置的信息。此方法能够考虑到滚动条的影响,因此通常更推荐用于此类场景下[^4]。 需要注意的是,在某些情况下仅依靠 `getBoundingClientRect().top` 可能无法满足需求,因为这会给出相对于视口而非整个文档的结果。为了得到绝对值,则需加上当前已滚动过的垂直像素数即 `window.scrollY` 或者兼容性更好的 `document.documentElement.scrollTop`[^2]。 综上所述,当希望在 Vue3 中准确测量某元素距页面最上方的实际距离时,建议综合考虑以上两种方案的优点来进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值