成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

Vue3如何操作dom?四種方式介紹

Vue如何操作dom?下面本篇文章給大家介紹一下Vue3中操作dom的四種方式,希望給大家有所幫助!

Vue3如何操作dom?四種方式介紹

前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用

最近產(chǎn)品經(jīng)理提出了很多用戶體驗(yàn)優(yōu)化的需求,涉及到很多dom的操作。

小張:“老鐵,本來開發(fā)Vue2項(xiàng)目操作dom挺簡單的,現(xiàn)在開發(fā)vue3項(xiàng)目,突然感覺一頭霧水!”

我:“沒事,原理都差不多,查查資料應(yīng)該沒問題的!”

至此將Vue3中dom操作常見的幾種方式總結(jié)一下!(學(xué)習(xí)視頻分享:vue視頻教程)

通過ref直接拿到dom引用

<template>     <div>         <div ref="sectionRef"></div>     </div> </template>  <script setup> import {ref} from 'vue' const sectionRef = ref() </script>
登錄后復(fù)制

通過對div元素添加了ref屬性,為了獲取到這個(gè)元素,我們聲明了一個(gè)與ref屬性名稱相同的變量sectionRef,然后我們通過 sectionRef.value 的形式即可獲取該div元素。

適用場景

單一dom元素或者個(gè)數(shù)較少的場景

Vue3如何操作dom?四種方式介紹

示例代碼

<template>     <div>         <p>通過ref直接拿到dom</p>         <div ref="sectionRef"></div>         <button @click="higherAction">變高</button>     </div> </template>  <script setup> import {ref} from 'vue' const sectionRef = ref() let height = 100;  const higherAction = () => {     height += 50;     sectionRef.value.style = `height: ${height}px`; } </script>  <style scoped> .demo1-container {     width: 100%;     height: 100%;      .ref-section {         width: 200px;         height: 100px;         background-color: pink;         transition: all .5s ease-in-out;     }      .btn {         width: 200px;         height: 50px;         background-color: gray;         color: #fff;         margin-top: 100px;     } } </style>
登錄后復(fù)制

通過父容器的ref遍歷拿到dom引用

<template>     <div>         <div ref="listRef">             <div @click="higherAction(index)" v-for="(item, index) in state.list" :key="index">                 <span>{{item}}</span>             </div>         </div>     </div> </template>  <script setup> import { ref, reactive } from 'vue' const listRef = ref()
登錄后復(fù)制

通過對父元素添加了ref屬性,并聲明了一個(gè)與ref屬性名稱相同的變量listRef,此時(shí)通過listRef.value會(huì)獲得包含子元素的dom對象

Vue3如何操作dom?四種方式介紹

此時(shí)可以通過listRef.value.children[index]的形式獲取子元素dom

適用場景

通過v-for循環(huán)生成的固定數(shù)量元素的場景

Vue3如何操作dom?四種方式介紹

示例代碼

<template>     <div>         <p>通過父容器遍歷拿到dom</p>         <div ref="listRef">             <div @click="higherAction(index)" v-for="(item, index) in state.list" :key="index">                 <span>{{item}}</span>             </div>         </div>     </div> </template>  <script setup> import { ref, reactive } from 'vue' const listRef = ref() const state = reactive({     list: [1, 2, 3, 4, 5, 6, 7, 8] })  const higherAction = (index: number) => {     let height = listRef.value.children[index].style.height ? listRef.value.children[index].style.height : '20px';     height = Number(height.replace('px', ''));     listRef.value.children[index].style = `height: ${height + 20}px`; } </script>  <style scoped> .demo2-container {     width: 100%;     height: 100%;      .list-section {         width: 200px;         .list-item {             width: 200px;             height: 20px;             background-color: pink;             color: #333;             transition: all .5s ease-in-out;             display: flex;             justify-content: center;             align-items: center;         }     } } </style>
登錄后復(fù)制

通過:ref將dom引用放到數(shù)組中

<template>     <div>         <div>             <div :ref="setRefAction" @click="higherAction(index)" v-for="(item, index) in state.list" :key="index">                 <span>{{item}}</span>             </div>         </div>     </div> </template>  <script setup> import { reactive } from 'vue'  const state = reactive({     list: [1, 2, 3, 4, 5, 6, 7],     refList: [] as Array<any> })  const setRefAction = (el: any) => {     state.refList.push(el); } </script>
登錄后復(fù)制

通過:ref循環(huán)調(diào)用setRefAction方法,該方法會(huì)默認(rèn)接收一個(gè)el參數(shù),這個(gè)參數(shù)就是我們需要獲取的div元素

Vue3如何操作dom?四種方式介紹

此時(shí)可以通過state.refList[index]的形式獲取子元素dom

適用場景

通過v-for循環(huán)生成的不固定數(shù)量或者多種元素的場景

Vue3如何操作dom?四種方式介紹

示例代碼

<template>     <div>         <p>通過:ref將dom引用放到數(shù)組中</p>         <div>             <div :ref="setRefAction" @click="higherAction(index)" v-for="(item, index) in state.list" :key="index">                 <span>{{item}}</span>             </div>         </div>     </div> </template>  <script setup> import { reactive } from 'vue'  const state = reactive({     list: [1, 2, 3, 4, 5, 6, 7],     refList: [] as Array<any> })  const higherAction = (index: number) => {     let height = state.refList[index].style.height ? state.refList[index].style.height : '20px';     height = Number(height.replace('px', ''));     state.refList[index].style = `height: ${height + 20}px`;     console.log(state.refList[index]); }  const setRefAction = (el: any) => {     state.refList.push(el); } </script>  <style scoped> .demo2-container {     width: 100%;     height: 100%;      .list-section {         width: 200px;         .list-item {             width: 200px;             height: 20px;             background-color: pink;             color: #333;             transition: all .5s ease-in-out;             display: flex;             justify-content: center;             align-items: center;         }     } } </style>
登錄后復(fù)制

通過子組件emit傳遞ref

<template>     <div ref="cellRef" @click="cellAction">         <span>{{item}}</span>     </div> </template>  <script setup> import {ref} from 'vue';  const props = defineProps({     item: Number }) const emit = defineEmits(['cellTap']); const cellRef = ref(); const cellAction = () => {     emit('cellTap', cellRef.value); } </script>
登錄后復(fù)制

通過對子組件添加了ref屬性,并聲明了一個(gè)與ref屬性名稱相同的變量cellRef,此時(shí)可以通過emit將cellRef.value作為一個(gè)dom引用傳遞出去

Vue3如何操作dom?四種方式介紹

適用場景

多個(gè)頁面都可能有操作組件dom的場景

Vue3如何操作dom?四種方式介紹

示例代碼

<template>     <div ref="cellRef" @click="cellAction">         <span>{{item}}</span>     </div> </template>  <script setup> import {ref} from 'vue';  const props = defineProps({     item: Number }) const emit = defineEmits(['cellTap']); const cellRef = ref(); const cellAction = () => {     emit('cellTap', cellRef.value); } </script>  <style scoped> .cell-item {     width: 200px;     height: 20px;     background-color: pink;     color: #333;     transition: all .5s ease-in-out;     display: flex;     justify-content: center;     align-items: center; } </style>
登錄后復(fù)制

<template>     <div>         <p>通過子組件emit傳遞ref</p>         <div>             <Cell :item="item" @cellTap="cellTapHandler" v-for="(item, index) in state.list" :key="index">             </Cell>         </div>     </div> </template>  <script setup> import { reactive } from 'vue' import Cell from '@/components/Cell.vue' const state = reactive({     list: [1, 2, 3, 4, 5, 6, 7],     refList: [] as Array<any> })  const cellTapHandler = (el: any) => {     let height = el.style.height ? el.style.height : '20px';     height = Number(height.replace('px', ''));     el.style = `height: ${height + 20}px`; } </script>  <style scoped> .demo2-container {     width: 100%;     height: 100%;      .list-section {         width: 200px;     } } </style>
登錄后復(fù)制

【相關(guān)視頻教程推薦:vuejs入門教程、web前端入門】

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
亚洲 日韩 激情 无码 中出| 日本欧美大码A在线观看| 久久亚洲精品成人AV无码网站| 久久久噜噜噜久久| 蜜桃国产乱码精品一区二区三区| 国产自产V一区二区三区C| 激情综合婷婷丁香五月情| 久久久久亚州AⅤ无码专区首| 免费免费视频片在线观看| 人妻AV无码系列专区移动可看 | 亚洲AV无码潮喷在线观看蜜桃| 熟妇人妻无乱码中文字幕真矢织江| 久久亚洲中文字幕精品有坂深雪 | 国产午夜无码视频在线观看| 成 人 黄 色 网 站 视 频| 丰满少妇爆乳无码专区| 国精品99久9在线 | 免费| 久久久一本精品99久久精品66| 一二三四五在线播放免费观看中文| 亚洲AⅤ无码日韩AV无码网站| 天天影视网色香欲综合网| 亚洲AV无码久久寂寞少妇| 野花影视视频在线观看免费| MM131巨爆乳美女少妇动态图| 纯净模式怎么关闭| 哈昂~哈昂够了太多太深| 国产精品国产三级国AV麻豆| 久久99精品国产99久久6| 欧美成人精品午夜免费影视| 人妻AV中文字幕一区二区三区| 丰满的少妇愉情HD高清免费| 国产亚洲精久久久久久无码77777 国产亚洲精久久久久久无码777 | 最新欧美精品一区二区三区| 一本大道香蕉久中文在线播放| 99久久精品国产一区二区三区 | 日日摸夜夜摸狠狠摸婷婷| 亚洲 欧美 国产 制服 动漫| 又黄又爽又色的视频| 亚洲色国产欧美日韩| CHINESE宅妇内射AV| 国产美女遭强高潮网站| 免费 成 人 黄 色 网站69| 色欲久久久天天天综合网精品| 亚洲精品无码久久久久SM| OLDVIDEO高潮日本熟妇| 拔萝卜打牌不盖被子| 国产日韩AⅤ精品一区二区| 免费看黑人强伦姧人妻| 女人不怕粗短就怕蘑菇头什么意| 玩肥熟老妇BBW视频| 在线精品一区二区三区| 国产成人精品久久久久| 久久这里精品国产99丫E6| 天天槽夜夜槽槽不停| 无码人妻AⅤ一区二区三区夏目| 在线精品自偷自拍无码中文| 国产精品免费无遮挡无码永久视频| 麻花传媒0076在线观看| 天堂А√在线最新版中文下载| 丰满人妻AV无码一区二区三区| 成人午夜又粗又硬又长| 伴郎粗大的内捧猛烈进出视频观看| 国产做无码视频在线观看浪潮| 欧美在线一区二区三区| 亚洲欧美成人在线观看| 俄罗斯人和欧洲人的性格差异| 久久久久久久精品妇女99| 丰满少妇AAAAAA爰片毛片| 欧美乱强伦XXXXXXXXXX| 日韩乱码人妻无码中文字幕| 四虎成人精品在永久免费| 影音先锋亚洲成AⅤ无码| 国产精品毛片无码一区二区蜜桃| 内射中出日韩无国产剧情| 亚洲AV无码专区色爱天堂老鸭| 播放片高清MV在线观看| 久久偷看各类WC女厕嘘嘘| 午夜香吻视频在线看免费| 被俩个黑人前后破苞的女人| 久久亚洲AV无码AV男人的天堂| 无码人妻精品一区二区三区66 | 男生女生一起相差差差30| 亚洲国产AⅤ精品一区二区百度 | 未满十八岁的请自动离开| Chinese辽宁人妻4p| 久久久国产精品ⅤA麻豆百度| 天天躁日日躁狠狠躁性色AVQ | 国产精品VA在线观看无码不卡| 欧美成年黄网站色视频| 亚洲综合AV在线在线播放 | 亚欧洲精品在线视频免费观看| 暴躁CSGO妹子| 免费观看美女裸体的网站| 亚洲男人综合久久综合天堂| 国产裸体裸美女无遮挡网站| 日韩精品区一区二区三VR| 99久久人妻精品免费一区| 久久精品日日躁夜夜躁| 亚洲AV无码一区二区乱孑伦AS| 国产AV精国产传媒| 人妻无码ΑV中文字幕久久琪琪布| 中文字幕一线产区和二线| 久久99亚洲含羞草影院| 亚洲AV无码成人专区片在线观看 | 少妇夜夜春夜夜爽试看视频| XX性欧美肥妇精品久久久久久| 免费A级毛片无码视频| 亚洲最大AV资源站无码AV网址| 狠狠躁夜夜躁无码中文字幕| 久久人人做人人爽人人AV| 午夜无码免费福利视频网址 | 人伦亲情父母儿女的句子简短| 2020精品国产自在现线看| 久久亚洲精品无码AV红樱桃| 亚洲美女高潮久久久久| 精品国产一区二区AV片| 亚洲A成人无码网站在线| 国产一精品一AV一免费爽爽| 无码少妇一区二区浪潮AV| 最新国产免费AV片在线观看| 久久熟女俱乐部五十路二区av| 亚洲欧美日韩国产精品一区| 黑人粗大无码A∨人妻一区| 亚洲AV成人在线| 国产手机AV片在线无码观你| 婷婷五月综合色视频| 国产成人丝袜视频在线观看 | 亚洲综合蜜臀AV| 草莓榴莲秋葵绿丝污免费版18 | 老赵揉搓苏清雅双乳| 一本色道久久HEZYO无码| 精品国产乱码久久久久软件| 亚洲AV永久无码精品主页| 国精产品砖一区二区三区糖心 | 欧美人与动牲交免费观看视频 | 麻花传媒MV一二三区别在哪里| 手机在线观看AV片| 国产AV一区二区三区| 男人J桶进女人J无遮挡| 99精产国品一二三产区区别电影| 男人扒开女人下面猛进猛出 | 色五月丁香六月欧美综合| 亚洲国产精品线路久久| 精产国品一二三产区区别在哪儿| 亚洲妇女水蜜桃AV网网站| 久久99国产精品尤物| 永久免费AV无码不卡在线观看| 妺妺和我裸睡玩我下春雨医生| 99精品无人区乱码在线观看| 禁18在线观看免费网站| 亚洲无人区码一码二码三码四码| 久久精品无码一区二区三区免费| 西西人体大胆4444WWW| 黄桃AV无码免费一区二区三区 | 日日摸夜夜添夜夜添视频| 国产Chinese男男做受g片| 亚洲AⅤ日韩久久久久久| 精品久久久久久中文字幕无码软件 | 国产亚洲日韩网曝欧美台湾| 亚洲精品一品区二品区三品区| 国产94在线 | 传媒麻豆| 小怡的暴露耻辱系列小说| 精品国产乱码久久久久久软件大全 | 亚洲中文字幕一区精品自拍| 妺妺窝人体色WWW人体色| 菠萝蜜国际通道一区麻豆| 婷婷综合久久中文字幕蜜桃三电影| 国产午夜福利100集发布| 亚洲中文字幕无码AV永久| 欧美高潮抽搐喷水大叫| 丰满妇女强高潮18ⅩXXX| 娇妻玩4P被3个男子伺候| 曰批免费视频播放免费| 人体艺术大胆图片| 国产乱妇乱子在线播放视频| 亚洲伊人久久综合成人| 欧洲熟妇色XXXXX老妇| 1000部啪啪未满十八勿入不卡 | 亚洲AV无码专区青青草原| 久久天天躁夜夜躁狠狠躁2014| PYTHON人马大战CSDN| 无码专区一ⅤA亚洲V专区在线 | 铜铜铜铜铜铜铜铜好大好深色星空| 国内精品卡一卡二卡三| 中文在线А√在线| 日韩一区二区三区无码免费视频| 国产中文三级全黄| 中文字幕乱偷无码AV先锋| 狼人视频国产在线视频WWW色| 波多野结衣放荡的护士| 亚洲AV无码一区二区三区久久精| 蜜芽AV在线新地址| 国产AV日韩A∨亚洲AV电影| 亚洲欧洲无码一区二区三区| 人妻人人添人人爽夜夜欢视频| 国产人久久人人人人爽| 中文字幕乱码人妻无码久久| 铜铜铜铜铜铜铜铜好大免费| 麻豆星空传媒果冻传媒大象| 国产成人精品久久久久精品日日|