Vue 3 中动态获取高宽的思路详解

 更新时间:2023年10月14日 09:46:18   作者:牧码士  
这篇文章主要介绍了Vue3中动态获取高宽,实现思路大概是将监听到的高度赋给你需要设置的对象,本文通过实例代码给大家介绍的非常详细,需要的朋友一起看看吧

应用场景: 一般用于父组件动态变换宽高,子组件需要同步修改宽高

实现简介 : Vue3 写法

思路:

1.监听父组件的 宽高

2.将监听到的高度赋给 你需要设置的对象

 :: 引入监听 并实现 如何得到动态宽度 (此时的 div2 会与 divDom  宽度会保持一致)

<template>
    <div ref="divDom"></div> //你可以手动或者换成可拖拉伸缩的盒子
    <div ref= "div2" :style="{'width':leftShowWith.with}"></div>
</template>
 
第一种  获取方式
<script setup>
import {useResizeObserver} from "@vueuse/core";
const divDom =ref();
const leftShowWith  = reactive({
  with:'500px'
});
useResizeObserver(divDom , (entries) => {
  const entry = entries[0]
  const { width, height } = entry.contentRect
  console.log(`width: ${width}, height: ${height}`)
  console.log(`${width}px`)
  leftShowWith.with = `${width}px`;
})
</script>

一些补充的知识

1、了解 如何获取组件的对象 

<template>
    <div ref="divDom"></div>
</template>
第一种  获取方式
<script setup>
    import { ref, getCurrentInstance } from 'vue';
    const divDom = ref(null);
    onMounted(()=>{
        console.log('获取dom元素',divDom)
    })
    // 获取页面的实例对象
    const pageInstance = getCurrentInstance();
    // 获取dom节点对象
    const tagDomObj = pageInstance.refs.divDom;
 
</script>
第一种  获取方式
<script setup>
const divDom =ref();
</script>

2、了解 如何获取元素中的宽高

<div ref="init"></div> 
写在 页面 方法 部分
这里的 offsetHeight 是返回元素的宽度(包括元素宽度、内边距和边框,不包括外边距)
let height= this.$refs.init.$el.offsetHeight;  
let height= divDom.VALUE.$el.offsetHeight;   // 在Vue3 中的写法
 
这里的offsetHeight可以替换,用来获取其他的属性
offsetWidth       //返回元素的宽度(包括元素宽度、内边距和边框,不包括外边距)
offsetHeight      //返回元素的高度(包括元素高度、内边距和边框,不包括外边距)
clientWidth        //返回元素的宽度(包括元素宽度、内边距,不包括边框和外边距)
clientHeight       //返回元素的高度(包括元素高度、内边距,不包括边框和外边距)
style.width         //返回元素的宽度(包括元素宽度,不包括内边距、边框和外边距)
style.height       //返回元素的高度(包括元素高度,不包括内边距、边框和外边距)
scrollWidth       //返回元素的宽度(包括元素宽度、内边距和溢出尺寸,不包括边框和外边距),无溢出的情况,与clientWidth相同
scrollHeigh       //返回元素的高度(包括元素高度、内边距和溢出尺寸,不包括边框和外边距),无溢出的情况,与clientHeight相同
除此之外,还可以获取带有单位的数值
let height = window.getComputedStyle(this.$refs.init).height; 
这样获取的值是有单位的。

到此这篇关于Vue 3 中动态获取高宽的文章就介绍到这了,更多相关vue3动态获取高宽内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue编译器util工具使用方法示例

    vue编译器util工具使用方法示例

    这篇文章主要为大家介绍了vue编译器util工具使用方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • vue.js打包之后可能会遇到的坑!

    vue.js打包之后可能会遇到的坑!

    这篇文章主要给大家介绍了关于vue.js打包之后可能会遇到的一些坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-06-06
  • vue实现骨架屏的示例

    vue实现骨架屏的示例

    这篇文章主要介绍了vue实现骨架屏的示例,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下
    2021-04-04
  • vue如何使用swiper插件修改左右箭头的默认样式

    vue如何使用swiper插件修改左右箭头的默认样式

    这篇文章主要介绍了vue如何使用swiper插件修改左右箭头的默认样式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • vue-pdf插件实现pdf文档预览方式(自动分页预览)

    vue-pdf插件实现pdf文档预览方式(自动分页预览)

    这篇文章主要介绍了vue-pdf插件实现pdf文档预览方式(自动分页预览),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 前端vue3打印功能实现(多页打印、不使用插件)

    前端vue3打印功能实现(多页打印、不使用插件)

    在Vue项目中实现打印功能是前端开发中常见需求之一,这篇文章主要介绍了前端vue3打印功能实现的全部过程,文中介绍的方法实现了多页打印并且不使用插件,需要的朋友可以参考下
    2024-09-09
  • 详解Vue的Pinia如何做到刷新不丢数据

    详解Vue的Pinia如何做到刷新不丢数据

    Pinia 是 Vue 3 的官方推荐状态管理库,旨在替代 Vuex,提供更简单、直观的状态管理解决方案,Pinia 的设计理念是简单、易于学习和使用,本文给大家详细介绍了Vue的Pinia如何做到刷新不丢数据,需要的朋友可以参考下
    2025-01-01
  • vue自定义穿梭框支持远程滚动加载的实现方法

    vue自定义穿梭框支持远程滚动加载的实现方法

    这篇文章主要介绍了vue自定义穿梭框支持远程滚动加载,iview是全局注入,基本使用原先的类名进行二次创建公共组件,修改基础js实现逻辑,本文结合实例代码介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • Vue触发隐藏input file的方法实例详解

    Vue触发隐藏input file的方法实例详解

    这篇文章主要介绍了Vue触发隐藏input file的方法实例详解,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-08-08
  • Vue实现数字动画的几种方案

    Vue实现数字动画的几种方案

    本文介绍了三种使用Vue实现动态数字动画的方案:使用Vue的响应式数据与`setInterval`逐步更新数字,通过Vue的动画API和CSS动画效果为数字增加过渡效果,以及使用更高效的`requestAnimationFrame`来提供更加流畅的动画表现,每种方案都详细说明了原理、实现步骤和代码示例
    2025-02-02

最新评论