vue3页面加载完成后如何获取宽度、高度

 更新时间:2023年04月24日 09:32:23   作者:赚成美业  
这篇文章主要介绍了vue3页面加载完成后如何获取宽度、高度问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue3页面加载完成后获取宽度、高度

刚好H5项目有用到这个需求,页面加载完成后获取当前页面高度,记录一下。^_^

<template>
<div class="wrap" :style="{height:hHeight+'px'}">
</div>
</template>
<script lang='ts'>
import { defineComponent, reactive, nextTick, onMounted, toRefs } from "vue";
export default defineComponent({
  name: "Aboutus",
  setup() {
    let state = reactive({
      hHeight: 0,//页面高度
    });
  onMounted(() => {
    nextTick(()=>{
        state.hHeight = document.documentElement.clientHeight;
        console.log(document.documentElement.clientHeight)
    })
  })
  return {
      ...toRefs(state)
  }
  },
});
</script>

用vue3.2版本的也可以用语法糖来处理,直接上代码:

<template>
  <div class="wrap" :style="{height:state.hHeight+'px'}">
   </div>
</template>
<script setup>
import { reactive, nextTick } from "vue"
const state = reactive({
    hHeight: 0
})
nextTick(()=>{
     state.hHeight = document.documentElement.clientHeight;
     console.log(document.documentElement.clientHeight)
 })
</script>

亲测可用,大家可以试试! 

 

vue3之vue3.2获取dom元素的宽高

知识点:ref,nextTike

  • ref可以用于dom对象的获取,以及创建一个响应式的普通对象类型
  • nextTick是一个函数,它接受一个函数作为参数,nextTick官网定义是‘将回调推迟到下一个 DOM 更新周期之后执行’,

未使用nextTike

<!--
 * new page
 * @author: Blaine
 * @since: 2022-06-30
 * page_nextTike.vue
-->
<template>
  <div class="container" >
    <ul ref="myRef">
      <li v-for="(item, index) in pepleList" :key="index">{{ item }}</li>
    </ul>
    <button @click="addHandle">增加</button>
  </div>
</template>

<script setup lang="ts">
import { onMounted, reactive, ref, nextTick } from 'vue'
let pepleList = reactive<string[]>(['蜘蛛侠', '钢铁侠', '美国队长'])
const myRef = ref<HTMLElement>();
onMounted(() => {
  console.log('列表的高度是:', myRef.value?.clientHeight)
})
const addHandle =  async() => {
  pepleList.push('闪电侠')
  // await nextTick()
  console.log('列表的高度是:', myRef.value?.clientHeight)
}
</script>

<style scoped>
</style>

**注意:**这里的list并没有立即增加

问题在于我们改变list的值时,vue并不是立刻去更新dom,而是在一个事件循环最后再去更新dom,这样可以避免不必要的计算和dom操作,对提高性能非常重要。

那么我们需要在dom更新完成后,再去获取ul的高度,这时候就需要用到nextTick了,

使用ref+nextTick

<!--
 * new page
 * @author: Blaine
 * @since: 2022-06-30
 * page_nextTike.vue
-->
<template>
  <div class="container" >
    <ul ref="myRef">
      <li v-for="(item, index) in pepleList" :key="index">{{ item }}</li>
    </ul>
    <button @click="addHandle">增加</button>
  </div>
</template>

<script setup lang="ts">
import { onMounted, reactive, ref, nextTick } from 'vue'
let pepleList = reactive<string[]>(['蜘蛛侠', '钢铁侠', '美国队长'])
const myRef = ref<HTMLElement>();
onMounted(() => {
  console.log('列表的高度是:', myRef.value?.clientHeight)
})
const addHandle =  async() => {
  pepleList.push('闪电侠')
  await nextTick()
  console.log('列表的高度是:', myRef.value?.clientHeight)
}
</script>

<style scoped>
</style>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue实现电梯样式锚点导航效果流程详解

    Vue实现电梯样式锚点导航效果流程详解

    这篇文章主要介绍了Vue实现电梯样式锚点导航效果流程,这种导航效果广泛应用于商城点餐购物情景,文中通过示例代码介绍的很详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-05-05
  • Vue+Element UI实现下拉菜单的封装

    Vue+Element UI实现下拉菜单的封装

    这篇文章主要为大家详细介绍了Vue+Element UI实现下拉菜单的封装代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • vue2过滤器模糊查询方法

    vue2过滤器模糊查询方法

    今天小编就为大家分享一篇vue2过滤器模糊查询方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue移动端下拉刷新和上拉加载的实现代码

    vue移动端下拉刷新和上拉加载的实现代码

    这篇文章主要介绍了vue移动端下拉刷新和上拉加载的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Vue的watch和computed方法的使用及区别介绍

    Vue的watch和computed方法的使用及区别介绍

    Vue的watch属性可以用来监听data属性中数据的变化。这篇文章主要介绍了Vue的watch和computed方法的使用及区别,需要的朋友可以参考下
    2018-09-09
  • 详解vue-cli3使用

    详解vue-cli3使用

    这篇文章主要介绍了详解vue/cli 3使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • 详解关于Vue版本不匹配问题(Vue packages version mismatch)

    详解关于Vue版本不匹配问题(Vue packages version mismatch)

    这篇文章主要介绍了详解关于Vue版本不匹配问题(Vue packages version mismatch),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Vue3之元素和组件的动画切换实现示例详解

    Vue3之元素和组件的动画切换实现示例详解

    这篇文章主要为大家介绍了Vue3之元素和组件的动画切换实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Vue MVVM模型与data及methods属性超详细讲解

    Vue MVVM模型与data及methods属性超详细讲解

    MVVM旨在利用WPF中的数据绑定函数,通过从视图层中几乎删除所有GUI代码(代码隐藏),更好地促进视图层开发与模式其余部分的分离,这篇文章主要介绍了Vue MVVM模型与data及methods属性
    2022-10-10
  • 手把手教你用vue3开发一个打砖块小游戏

    手把手教你用vue3开发一个打砖块小游戏

    这篇文章主要给大家介绍了关于如何利用vue3开发一个打砖块小游戏的相关资料,通过一个小游戏实例可以快速了解vue3开发小游戏的流程,需要的朋友可以参考下
    2021-07-07

最新评论