日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

vue使用動態組件實現TAB切換效果

瀏覽:2日期:2022-09-30 11:18:58
問題描述

tab切換的場景在開發中會經常用到。當需要實現這種效果的時候,我們常常會想到下面的方式去實現這個效果。

方式一 使用display:none;去控制dom元素的顯示與隱藏。從而實現,兩個tab的顯示與隱藏。不過如果有三四個tab要切換的話,這種方式就不可取了。 方式二 使用vue中的指令v-if或者v-show實現。這種方式可以實現,不過代碼寫的不優雅。試想一個.vue文件中出現一大把v-if是什么樣的效果?而且使用v-if還得聲明很多的變量去做標識。所以不是十分好的的解決方案 方式三 使用elementui或者iview中的tab切換組件 這種方式也還行,不過有的時候需要/deep/改樣式,就有點麻煩了。

筆者認為,使用vue的動態組件去實現tab的切換效果,會比較方便。

什么是vue的動態組件

vue的動態組件,本質上還是一個組件,組件通俗來說就是一塊具有js邏輯的UI視圖層。所謂動態組件就是我們可以根據一些條件去動態控制頁面的某個地方具體顯示那個組件。這樣說就有點tab切換的味道了。

應用場景描述

需求效果圖

vue使用動態組件實現TAB切換效果

其實很簡單,就是一個tab切換的效果,當然實際開發中,tab的樣式效果可能會稍微復雜點。

實現步驟第一步(新建組件并引入注冊)

首先在components文件夾下定義四個.vue文件,作為tab切換呈現的內容部分,引入既可使用。

新建

vue使用動態組件實現TAB切換效果

引入并注冊

import one from './components/one';import two from './components/two';import three from './components/three';import four from './components/four';components: { one, two, three, four, },第二步(布局,上面放tab點擊的標簽,下面放組件呈現對應內容)

<template> <div id='app'> <div class='top'> <!-- 放置tab點擊標簽 --> </div> <div class='bottom'> <!-- 放置動態組件呈現對應內容 --> </div> </div></template>第三步(寫好上面的tab點擊標簽)

// 首先我們在data中定義數組cardArr存放點擊tab的數據 data() {return { whichIndex: 0, cardArr: [ { componentName: '動態組件一', }, { componentName: '動態組件二', }, { componentName: '動態組件三', }, { componentName: '動態組件四', }, ],}; },// 然后使用v-for循環出來呈現 <template> <div id='app'><div class='top'> <div : v-for='(item, index) in cardArr' :key='index' @click='whichIndex = index' > {{ item.componentName }} </div></div><div class='bottom'> <!-- 放置動態組件... --></div> </div> </template>// 又因為需要有高亮狀態,所以初始我們就默認讓索引為0的也就是第一個高亮,使用data中定義的whichIndex和:class實現 // 高亮樣式 .highLight { box-shadow: 0 15px 30px rgba(0, 0, 0, 0.2); transform: translate3d(0, -1px, 0); }第四步(使用動態組件標簽 <component/> )

// 動態組件標簽<component/>有一個is屬性,is的值為誰,就可以渲染誰, // 這里我們先用一個變量componentId存起來,componentId為誰,就呈現誰 <div class='bottom'><component :is='componentId'></component> </div>// 我們默認就讓第一個第一個呈現吧,同時需要讓cardList中的組件名和組件id對應上, // 所以data中應該修改成這樣 data() {return { whichIndex: 0, componentId: 'one', // 值就是我們在components對象中注冊的引入的組件的名字 cardArr: [ { componentName: '動態組件一', componentId: 'one', // 要與之對應 }, { componentName: '動態組件二', componentId: 'two', // 要與之對應 }, { componentName: '動態組件三', componentId: 'three', // 要與之對應 }, { componentName: '動態組件四', componentId: 'four', // 要與之對應 }, ],}; },第五步(點擊某個tab組件,就動態更改對應componentId值即可)

<template> <div id='app'> <div class='top'> <div : v-for='(item, index) in cardArr':key='index'@click=' whichIndex = index; componentId = item.componentId; ' > <!-- @click在標簽中可以寫多個操作代碼,以分號隔開即可 -->{{ item.componentName }} </div> </div> <div class='bottom'> <!-- keep-alive緩存組件,這樣的話,組件就不會被銷毀,DOM就不會被重新渲染, 瀏覽器也就不會回流和重繪,就可以優化性能。不使用的話頁面加載就會慢一點 --> <keep-alive><component :is='componentId'></component> </keep-alive> </div> </div></template>完整代碼附上

<template> <div id='app'> <div class='top'> <div : v-for='(item, index) in cardArr':key='index'@click=' whichIndex = index; componentId = item.componentId;' >{{ item.componentName }} </div> </div> <div class='bottom'> <keep-alive><component :is='componentId'></component> </keep-alive> </div> </div></template><script>import one from './components/one';import two from './components/two';import three from './components/three';import four from './components/four';export default { components: { one, two, three, four, }, data() { return { whichIndex: 0, componentId: 'one', cardArr: [{ componentName: '動態組件一', componentId: 'one',},{ componentName: '動態組件二', componentId: 'two',},{ componentName: '動態組件三', componentId: 'three',},{ componentName: '動態組件四', componentId: 'four',}, ], }; },};</script><style lang='less' scoped>#app { width: 100%; height: 100vh; box-sizing: border-box; padding: 50px; .top { width: 100%; height: 80px; display: flex; justify-content: space-around; .crad { width: 20%; height: 80px; line-height: 80px; text-align: center; background-color: #fff; border: 1px solid #e9e9e9; } .highLight { box-shadow: 0 15px 30px rgba(0, 0, 0, 0.2); transform: translate3d(0, -1px, 0); } } .bottom { margin-top: 20px; width: 100%; height: calc(100% - 100px); border: 3px solid pink; display: flex; justify-content: center; align-items: center; }}</style>

以上就是vue使用動態組件實現TAB切換效果的詳細內容,更多關于vue 動態組件實現TAB切換效果的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品qvod| 麻豆亚洲精品| 国内精品亚洲| 国产一区二区三区网| 国产日产精品_国产精品毛片| 日韩精品视频在线看| 欧美日韩一区二区三区四区在线观看 | 麻豆视频在线观看免费网站黄| 久久亚洲国产精品尤物| 国内在线观看一区二区三区| 激情不卡一区二区三区视频在线| 色欧美自拍视频| 91精品国产乱码久久久久久久| 激情婷婷亚洲| 蜜臀国产一区二区三区在线播放| 在线综合亚洲| 亚洲精品日韩久久| 国产精品1区在线| а√天堂8资源在线| 在线日韩电影| 爽好久久久欧美精品| 青青伊人久久| 成人免费一区| 欧美.日韩.国产.一区.二区| 蜜臀va亚洲va欧美va天堂 | 香蕉成人久久| 欧美一区二区三区久久精品| 国产精品极品| 久久久人人人| 欧美日韩国产一区精品一区| 亚洲免费成人av在线| 国产精品综合色区在线观看| 国产精品久久观看| 精品在线91| 亚洲精品女人| 精品国产a一区二区三区v免费| 久久久久久久久久久9不雅视频| 在线日韩视频| 日韩黄色在线观看| 黑人精品一区| 久热re这里精品视频在线6| 欧美亚洲网站| 天堂√8在线中文| 首页国产欧美日韩丝袜| 91综合久久爱com| zzzwww在线看片免费| 国产精品美女| 精品三级久久久| 99国产一区| 免费亚洲婷婷| 亚洲激情婷婷| 久久99久久久精品欧美| 亚洲激情社区| 国产成人免费| 蜜臀国产一区二区三区在线播放 | 亚久久调教视频| 91嫩草亚洲精品| 亚洲区国产区| 成人国产精品久久| 免费一区二区视频| 97精品一区二区| 亚洲精品免费观看| 欧美精品日日操| 欧美一区激情| 欧美特黄一区| 美女在线视频一区| 视频在线在亚洲| 国产精品二区不卡| 亚洲18在线| 中文一区二区| 久久福利在线| 视频在线观看91| 麻豆国产一区| 日韩精品一区二区三区免费观影| 日本特黄久久久高潮| 亚洲婷婷免费| 久久中文欧美| 日韩一二三区在线观看| 激情自拍一区| 成人在线免费观看网站| 日本一不卡视频| 在线亚洲精品| 香蕉成人av| 国产精品尤物| 综合色就爱涩涩涩综合婷婷| 欧美中文一区二区| 成人国产精品| 麻豆精品少妇| 日韩激情一区二区| 在线一区二区三区视频| 香蕉国产精品| 日韩精品网站| 久草免费在线视频| 开心激情综合| 国产精品乱战久久久| 午夜久久av| 一区二区电影在线观看| 午夜国产精品视频| 久久久久久黄| 日韩大片免费观看| 精品理论电影在线| 国产极品一区| 国产精品成人一区二区网站软件| 99视频一区| 欧美日韩国产在线一区| 性欧美xxxx免费岛国不卡电影| 国产精品麻豆久久| 捆绑调教美女网站视频一区| 欧美日本不卡高清| 日本久久二区| 日本久久二区| 青草国产精品| 国产精品亚洲综合色区韩国| 日韩av在线免费观看不卡| 亚洲三级网址| 亚洲精品日韩久久| 日韩有吗在线观看| 日韩欧美2区| 蜜桃视频免费观看一区| 免费在线观看视频一区| 日韩中文欧美在线| 蜜桃一区二区三区在线| 日本中文字幕不卡| 日韩精品欧美大片| 亚洲精品日本| 日韩高清电影免费| 7777精品| 国产精品18| 色综合狠狠操| www.com.cn成人| 婷婷精品视频| 亚洲激情黄色| 亚洲开心激情| 色8久久久久| 欧美永久精品| 国产精品国码视频| 精品久久久久中文字幕小说| 久久久久久久欧美精品| 日韩中文字幕不卡| 亚洲精品韩国| 91精品国产一区二区在线观看| 日韩欧美中文在线观看| 欧美久久久网站| 精品美女视频| 久久久国产精品一区二区中文| 亚洲福利国产| 亚洲午夜国产成人| 国产精品丝袜在线播放| 久久久久久一区二区| 日韩成人精品一区二区| 99视频精品全国免费| 日韩精品一二三区| 国产精品永久| 欧美精品高清| 日韩精品一区第一页| 国产伦一区二区三区| 亚洲国产福利| 蜜臀av一区二区三区| 久久99久久人婷婷精品综合| 群体交乱之放荡娇妻一区二区| 日韩中文字幕区一区有砖一区 | 日韩一二三区在线观看| 欧美成a人片免费观看久久五月天| 国产激情在线播放| 亚洲一区二区成人| 久久99久久久精品欧美| 欧美影院三区| 欧美亚洲免费| 日本久久成人网| 日韩国产欧美三级| 日韩一区三区| 亚洲a成人v| 成人在线免费观看91| 99香蕉国产精品偷在线观看 | 国产手机视频一区二区| 国产精品一区二区av日韩在线| 久久久久久一区二区| 亚洲免费影院| 久久精品二区亚洲w码| 亚洲激情国产| 麻豆免费精品视频| 日韩亚洲精品在线| 国产精品成人国产| 黄色亚洲在线| 久久69成人| 石原莉奈在线亚洲二区| 97精品国产福利一区二区三区| 男女精品网站| av资源中文在线| 日韩黄色av| 激情五月综合网| 精品视频在线观看网站| 在线精品国产亚洲| 色婷婷精品视频| 国产精品成人国产| 视频在线观看91| 久久精品影视| 久久99久久人婷婷精品综合| 西西人体一区二区| www.com.cn成人|