Vue?3?中動(dòng)態(tài)獲取高寬的思路詳解
應(yīng)用場(chǎng)景: 一般用于父組件動(dòng)態(tài)變換寬高,子組件需要同步修改寬高
實(shí)現(xiàn)簡(jiǎn)介 : Vue3 寫法
思路:
1.監(jiān)聽父組件的 寬高
2.將監(jiān)聽到的高度賦給 你需要設(shè)置的對(duì)象
:: 引入監(jiān)聽 并實(shí)現(xiàn) 如何得到動(dòng)態(tài)寬度 (此時(shí)的 div2 會(huì)與 divDom 寬度會(huì)保持一致)
<template> <div ref="divDom"></div> //你可以手動(dòng)或者換成可拖拉伸縮的盒子 <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>
一些補(bǔ)充的知識(shí)
1、了解 如何獲取組件的對(duì)象
<template> <div ref="divDom"></div> </template> 第一種 獲取方式 <script setup> import { ref, getCurrentInstance } from 'vue'; const divDom = ref(null); onMounted(()=>{ console.log('獲取dom元素',divDom) }) // 獲取頁面的實(shí)例對(duì)象 const pageInstance = getCurrentInstance(); // 獲取dom節(jié)點(diǎn)對(duì)象 const tagDomObj = pageInstance.refs.divDom; </script> 第一種 獲取方式 <script setup> const divDom =ref(); </script>
2、了解 如何獲取元素中的寬高
<div ref="init"></div> 寫在 頁面 方法 部分 這里的 offsetHeight 是返回元素的寬度(包括元素寬度、內(nèi)邊距和邊框,不包括外邊距) let height= this.$refs.init.$el.offsetHeight; let height= divDom.VALUE.$el.offsetHeight; // 在Vue3 中的寫法 這里的offsetHeight可以替換,用來獲取其他的屬性 offsetWidth //返回元素的寬度(包括元素寬度、內(nèi)邊距和邊框,不包括外邊距) offsetHeight //返回元素的高度(包括元素高度、內(nèi)邊距和邊框,不包括外邊距) clientWidth //返回元素的寬度(包括元素寬度、內(nèi)邊距,不包括邊框和外邊距) clientHeight //返回元素的高度(包括元素高度、內(nèi)邊距,不包括邊框和外邊距) style.width //返回元素的寬度(包括元素寬度,不包括內(nèi)邊距、邊框和外邊距) style.height //返回元素的高度(包括元素高度,不包括內(nèi)邊距、邊框和外邊距) scrollWidth //返回元素的寬度(包括元素寬度、內(nèi)邊距和溢出尺寸,不包括邊框和外邊距),無溢出的情況,與clientWidth相同 scrollHeigh //返回元素的高度(包括元素高度、內(nèi)邊距和溢出尺寸,不包括邊框和外邊距),無溢出的情況,與clientHeight相同 除此之外,還可以獲取帶有單位的數(shù)值 let height = window.getComputedStyle(this.$refs.init).height; 這樣獲取的值是有單位的。
到此這篇關(guān)于Vue 3 中動(dòng)態(tài)獲取高寬的文章就介紹到這了,更多相關(guān)vue3動(dòng)態(tài)獲取高寬內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue如何使用swiper插件修改左右箭頭的默認(rèn)樣式
這篇文章主要介紹了vue如何使用swiper插件修改左右箭頭的默認(rèn)樣式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01vue-pdf插件實(shí)現(xiàn)pdf文檔預(yù)覽方式(自動(dòng)分頁預(yù)覽)
這篇文章主要介紹了vue-pdf插件實(shí)現(xiàn)pdf文檔預(yù)覽方式(自動(dòng)分頁預(yù)覽),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03前端vue3打印功能實(shí)現(xiàn)(多頁打印、不使用插件)
在Vue項(xiàng)目中實(shí)現(xiàn)打印功能是前端開發(fā)中常見需求之一,這篇文章主要介紹了前端vue3打印功能實(shí)現(xiàn)的全部過程,文中介紹的方法實(shí)現(xiàn)了多頁打印并且不使用插件,需要的朋友可以參考下2024-09-09詳解Vue的Pinia如何做到刷新不丟數(shù)據(jù)
Pinia 是 Vue 3 的官方推薦狀態(tài)管理庫,旨在替代 Vuex,提供更簡(jiǎn)單、直觀的狀態(tài)管理解決方案,Pinia 的設(shè)計(jì)理念是簡(jiǎn)單、易于學(xué)習(xí)和使用,本文給大家詳細(xì)介紹了Vue的Pinia如何做到刷新不丟數(shù)據(jù),需要的朋友可以參考下2025-01-01vue自定義穿梭框支持遠(yuǎn)程滾動(dòng)加載的實(shí)現(xiàn)方法
這篇文章主要介紹了vue自定義穿梭框支持遠(yuǎn)程滾動(dòng)加載,iview是全局注入,基本使用原先的類名進(jìn)行二次創(chuàng)建公共組件,修改基礎(chǔ)js實(shí)現(xiàn)邏輯,本文結(jié)合實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08Vue觸發(fā)隱藏input file的方法實(shí)例詳解
這篇文章主要介紹了Vue觸發(fā)隱藏input file的方法實(shí)例詳解,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08Vue實(shí)現(xiàn)數(shù)字動(dòng)畫的幾種方案
本文介紹了三種使用Vue實(shí)現(xiàn)動(dòng)態(tài)數(shù)字動(dòng)畫的方案:使用Vue的響應(yīng)式數(shù)據(jù)與`setInterval`逐步更新數(shù)字,通過Vue的動(dòng)畫API和CSS動(dòng)畫效果為數(shù)字增加過渡效果,以及使用更高效的`requestAnimationFrame`來提供更加流暢的動(dòng)畫表現(xiàn),每種方案都詳細(xì)說明了原理、實(shí)現(xiàn)步驟和代碼示例2025-02-02