gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

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

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

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

前端(vue)入門到精通課程:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

最近產品經理提出了很多用戶體驗優化的需求,涉及到很多dom的操作。

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

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

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

通過ref直接拿到dom引用

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

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

適用場景

單一dom元素或者個數較少的場景

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>
登錄后復制

通過父容器的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()
登錄后復制

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

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

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

適用場景

通過v-for循環生成的固定數量元素的場景

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>
登錄后復制

通過:ref將dom引用放到數組中

<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>
登錄后復制

通過:ref循環調用setRefAction方法,該方法會默認接收一個el參數,這個參數就是我們需要獲取的div元素

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

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

適用場景

通過v-for循環生成的不固定數量或者多種元素的場景

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

示例代碼

<template>     <div>         <p>通過:ref將dom引用放到數組中</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>
登錄后復制

通過子組件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>
登錄后復制

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

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

適用場景

多個頁面都可能有操作組件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>
登錄后復制

<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>
登錄后復制

【相關視頻教程推薦:vuejs入門教程、web前端入門】

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
www.xxx亚洲| 亚洲啊啊啊啊啊| 爱情岛论坛vip永久入口| 天堂网在线免费观看| 国内自拍中文字幕| 妺妺窝人体色www在线观看| 国产福利在线免费| 欧美三级在线观看视频| 国产高清av片| 欧美 国产 小说 另类| 看一级黄色录像| 亚洲高清视频免费| 无遮挡又爽又刺激的视频| 国产奶头好大揉着好爽视频| 日韩黄色片在线| 国产福利精品一区二区三区| 国产精品一二三在线观看| 在线观看国产一级片| 8x8ⅹ国产精品一区二区二区| 久久福利一区二区| 日韩视频在线观看视频| 9色porny| 隔壁人妻偷人bd中字| 韩国中文字幕av| 777久久精品一区二区三区无码 | 激情文学亚洲色图| 手机在线免费毛片| 午夜剧场在线免费观看| 可以看毛片的网址| 小说区视频区图片区| 在线播放 亚洲| 九九爱精品视频| 97超碰免费观看| 国产精品无码一本二本三本色| 国产无限制自拍| 成人午夜视频免费观看| 欧美极品欧美精品欧美图片| 99久久久无码国产精品6| 自拍一级黄色片| 日韩video| 国产精品人人妻人人爽人人牛| 欧美污视频网站| 成年网站在线播放| av在线免费观看国产| 国产精品va无码一区二区| 欧美国产日韩另类| 日本中文字幕一级片| 99九九99九九九99九他书对| www.久久com| 一区二区三区免费播放| 国产精品333| 一区二区三区 日韩| 国产成人亚洲综合无码| 免费成人在线视频网站| 日韩国产欧美亚洲| youjizzxxxx18| 成年人网站av| 爆乳熟妇一区二区三区霸乳| 中文字幕色网站| 草草草视频在线观看| 妞干网在线视频观看| 激情综合网俺也去| 少妇高潮喷水久久久久久久久久| 亚洲怡红院在线| 日韩手机在线观看视频| 亚洲一区二区三区四区五区| 99精品视频网站| 国产熟人av一二三区| 久久久无码中文字幕久...| 亚洲va综合va国产va中文| 欧美不卡在线播放| 337p粉嫩大胆噜噜噜鲁| 99中文字幕在线| 2022中文字幕| 久热精品在线播放| 可以看毛片的网址| 欧美 日本 亚洲| 警花观音坐莲激情销魂小说| avav在线看| 很污的网站在线观看| 中文字幕永久有效| 亚洲午夜精品久久久久久人妖| 特色特色大片在线| 日本福利视频一区| 国产三级生活片| 一级网站在线观看| 99热一区二区| a天堂资源在线观看| 中文字幕综合在线观看| 四虎成人在线播放| 日韩欧美精品免费| 4444亚洲人成无码网在线观看| 欧美日韩一区二区三区电影| 91网址在线观看精品| aa视频在线播放| 大胆欧美熟妇xx| 精品国产免费av| 中文字幕资源在线观看| 国产视频1区2区3区| 国产欧美123| 国产成人在线综合| 欧美大黑帍在线播放| 国产免费一区二区视频| 欧美黄色免费影院| 欧美两根一起进3p做受视频| 一级特黄性色生活片| 五月天婷婷亚洲| 18黄暴禁片在线观看| 精品少妇在线视频| av观看免费在线| 亚洲热在线视频| 大桥未久一区二区三区| 116极品美女午夜一级| 日本中文字幕高清| 欧美网站免费观看| 日韩欧美一级在线| 成人免费aaa| 伊人久久在线观看| 女人天堂av手机在线| 麻豆md0077饥渴少妇| 日韩a级在线观看| 成人免费在线观看视频网站| 一级黄色高清视频| 懂色av粉嫩av蜜臀av| 男女啪啪免费视频网站| 中文字幕视频在线免费观看| 亚洲福利精品视频| 激情图片qvod| 超薄肉色丝袜足j调教99| 青青青在线视频免费观看| 成年人黄色在线观看| 成人中文字幕在线播放| 欧在线一二三四区| 99九九精品视频| 国产深夜男女无套内射| 日韩美女爱爱视频| 亚洲欧美日韩精品一区| 国产三级国产精品国产专区50| 欧美视频在线第一页| 中文字幕人妻熟女人妻洋洋| 青青草精品视频在线观看| 九色91popny| 午夜激情福利在线| 激情久久综合网| 激情视频小说图片| 91亚洲精品久久久蜜桃借种| 一区二区三区入口| 免费看的黄色大片| 国产九九热视频| 国产精品沙发午睡系列| 欧美日韩亚洲自拍| 日韩中文字幕三区| 国产三级国产精品国产专区50| 妞干网视频在线观看| 丰满人妻一区二区三区53号| av无码精品一区二区三区| 无罩大乳的熟妇正在播放| 奇米影视四色在线| 日韩一级免费在线观看| 国产黄视频在线| 日韩中文字幕在线视频观看| 成人在线观看你懂的| 成年在线观看视频| 国产精品久久国产| 每日在线观看av| 欧美精品一区免费| 免费在线观看的av网站| 自慰无码一区二区三区| 国产欧美高清在线| 色婷婷综合久久久久中文字幕 | a级网站在线观看| 隔壁人妻偷人bd中字| 国产91在线亚洲| 青青青在线视频播放| 亚洲18在线看污www麻豆| 中文字幕在线视频一区二区| 色姑娘综合天天| 黄色激情在线视频| 丰满少妇被猛烈进入高清播放| 久草资源站在线观看| 亚洲性生活网站| 欧美一级特黄a| 国产精品99久久久久久大便| 男人天堂a在线| 一区二区在线播放视频| 天天做天天干天天操| 成人手机在线播放| 18禁男女爽爽爽午夜网站免费| 人妻内射一区二区在线视频| 久久精品午夜福利| 小说区视频区图片区| 一道本在线观看视频| 日韩国产一级片| 日本阿v视频在线观看| 欧美视频在线免费播放| 日本激情综合网| 欧美在线一区视频| 高潮一区二区三区| jizz18女人| 亚洲熟妇av一区二区三区漫画|