久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(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屬性,為了獲取到這個元素,我們聲明了一個與ref屬性名稱相同的變量sectionRef,然后我們通過 sectionRef.value 的形式即可獲取該div元素。

適用場景

單一dom元素或者個數(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屬性,并聲明了一個與ref屬性名稱相同的變量listRef,此時通過listRef.value會獲得包含子元素的dom對象

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

此時可以通過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方法,該方法會默認(rèn)接收一個el參數(shù),這個參數(shù)就是我們需要獲取的div元素

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

此時可以通過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屬性,并聲明了一個與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>
登錄后復(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號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
日韩欧美看国产| 精品国产欧美| 97久久精品| 亚洲va久久| 野花国产精品入口| 国产v综合v| 合欧美一区二区三区| 色偷偷色偷偷色偷偷在线视频| 日韩不卡一区二区| 中文一区一区三区免费在线观| 视频一区视频二区中文| 亚洲综合精品四区| 亚洲国产日韩欧美在线| 136国产福利精品导航网址| 日本欧美不卡| 日韩中文影院| 欧美精品一线| 欧美日韩一区二区高清| 亚洲精品婷婷| 日韩不卡手机在线v区| 麻豆中文一区二区| 国产精品成人3p一区二区三区| 久久不卡国产精品一区二区| 久久天堂av| 人在线成免费视频| 亚洲一区二区三区高清不卡| 蜜臀av在线播放一区二区三区| 日韩在线观看一区二区| 国产精品人人爽人人做我的可爱| 国产精品88久久久久久| 尤物在线精品| 在线国产一区| 国产人成精品一区二区三| 日韩激情精品| 国产精品大片| 天堂√中文最新版在线| 亚洲欧美日韩高清在线| 欧美一区91| 国产91在线播放精品| 免费久久精品| 色综合视频一区二区三区日韩| 日本a级不卡| 精品网站999| 不卡av一区二区| 精品欧美激情在线观看| 亚州精品视频| 日韩在线观看一区| 亚洲精品1区2区| 免费日韩一区二区| 特黄毛片在线观看| 水蜜桃久久夜色精品一区的特点| 日本欧美在线看| 精品欧美日韩精品| 日韩精品免费一区二区夜夜嗨| 日本精品久久| 久久在线视频免费观看| 尤物tv在线精品| 涩涩涩久久久成人精品| 国产欧美在线| 伊人久久大香伊蕉在人线观看热v| 久久精品99国产精品日本| 韩国久久久久久| 蜜臀精品久久久久久蜜臀 | 免费在线观看精品| 免费在线观看一区| 性欧美精品高清| 国内精品伊人| 亚洲精品黄色| 久久天堂精品| 久久精品xxxxx| 欧美日韩国产v| 水野朝阳av一区二区三区| 精品美女视频| 国产亚洲精品自拍| av日韩中文| 亚洲人成精品久久久| 日韩精品欧美激情一区二区| 欧美一区成人| 在线国产一区| 久久久久久一区二区| 日韩在线电影| 黑丝美女一区二区| 日韩在线看片| 欧美一级二级三级视频| 色综合www| 欧美精品中文字幕亚洲专区| www.51av欧美视频 | 蜜臀久久久久久久| 日韩不卡免费视频| 9国产精品视频| 日本久久精品| 日韩va欧美va亚洲va久久| 在线日韩视频| 手机在线电影一区| 国产精品嫩草影院在线看| 中文字幕av一区二区三区人| 亚洲一区二区免费看| 另类小说一区二区三区| 精品国产亚洲一区二区三区大结局| 成人av二区| 国产精品不卡| 久久香蕉精品香蕉| 在线日韩一区| 久久99精品久久久野外观看| 青草久久视频| 天堂精品久久久久| 噜噜噜躁狠狠躁狠狠精品视频 | 国产精品4hu.www| 国产图片一区| 久久国内精品视频| 丝瓜av网站精品一区二区| 蜜臀久久99精品久久久久久9| 伊伊综合在线| 久久精品国产99国产| 欧美一级全黄| 丝袜脚交一区二区| 日本韩国欧美超级黄在线观看| 福利精品一区| 久久精品官网| 久久精品国产999大香线蕉| 欧美亚洲自偷自偷| 亚洲aⅴ网站| 日本一区二区三区中文字幕| 日本亚洲最大的色成网站www| 亚洲视频国产精品| 日本欧美在线看| 在线观看亚洲精品福利片| 卡一卡二国产精品| 日韩亚洲一区在线| 中文字幕日本一区二区| 亚洲不卡视频| 五月天久久久| 日韩视频一区二区三区在线播放免费观看| 欧美特黄视频| 日韩成人在线看| 一区二区三区国产在线| 午夜久久av| 国产在线观看91一区二区三区| 国产一区二区久久久久| 国产麻豆久久| 伊人久久亚洲美女图片| 免播放器亚洲一区| 日韩一区网站| 国产精品伦一区二区| 国产毛片一区二区三区| 精品国产18久久久久久二百| 日韩国产一区二区三区| 免费精品一区| 成人一区不卡| 欧洲激情综合| 合欧美一区二区三区| 在线午夜精品| 日本aⅴ亚洲精品中文乱码| 久久三级毛片| 日韩成人亚洲| 视频在线观看国产精品| 91精品一区二区三区综合在线爱 | 久久国产精品成人免费观看的软件| 蜜桃tv一区二区三区| 老司机久久99久久精品播放免费| 日韩精品一级中文字幕精品视频免费观看 | 国产aa精品| 免费精品国产| 综合欧美精品| 黄色精品视频| 99pao成人国产永久免费视频 | 国产精品最新自拍| 国产女人18毛片水真多18精品| 99视频精品视频高清免费| 婷婷亚洲五月| 国产精品白丝一区二区三区| jizzjizz中国精品麻豆| 蜜桃成人av| 日本视频在线一区| 成人在线免费观看网站| 免费久久99精品国产自在现线| 91麻豆精品激情在线观看最新 | 香蕉久久久久久久av网站| 欧美中文日韩| 国产精品久久久久久久久久白浆| 欧美一级鲁丝片| 午夜在线一区| 国产一区二区三区日韩精品| 欧美综合另类| 亚洲高清二区| 久久亚洲黄色| 悠悠资源网久久精品| 美美哒免费高清在线观看视频一区二区| 国产欧美一级| 久久国产日本精品| 视频一区欧美日韩| 久久久久久久欧美精品| 日韩久久一区二区三区| 麻豆精品在线观看| 国产在线不卡一区二区三区| 国产亚洲毛片在线| 亚洲国产影院| 国产日本精品| 日韩专区欧美专区| 色婷婷久久久|