vue使用動(dòng)態(tài)組件實(shí)現(xiàn)TAB切換效果完整實(shí)例
一、方法1:使用Vant組件庫(kù)的tab組件
Vant 2 - Mobile UI Components built on Vue

二、 方法2:手動(dòng)創(chuàng)建tab切換效果


1.在components文件夾下創(chuàng)建切換的.vue頁(yè)面、引入使用
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,
},2.布局:上面放tab點(diǎn)擊的標(biāo)簽,下面放組件呈現(xiàn)對(duì)應(yīng)內(nèi)容
// 然后使用v-for循環(huán)出來(lái)呈現(xiàn)
<template>
<div id="app">
<div class="top">
<!-- 放置tab點(diǎn)擊標(biāo)簽 -->
<div class="crad"
:class="{ highLight: whichIndex == index }"
v-for="(item, index) in cardArr"
:key="index"
@click="whichIndex = index">
{{ item.componentName }}
</div>
</div>
<div class="bottom">
<!-- 放置動(dòng)態(tài)組件... -->
<!-- keep-alive緩存組件,這樣的話,組件就不會(huì)被銷(xiāo)毀,DOM就不會(huì)被重新渲染,
瀏覽器也就不會(huì)回流和重繪,就可以?xún)?yōu)化性能。不使用的話頁(yè)面加載就會(huì)慢一點(diǎn) -->
<keep-alive>
<component :is="componentId"></component>
</keep-alive>
</div>
</div>
</template>3.寫(xiě)好上面的tab點(diǎn)擊標(biāo)簽,定義數(shù)據(jù)修改樣式
// 首先我們?cè)赿ata中定義數(shù)組cardArr存放點(diǎn)擊tab的數(shù)據(jù)
data() {
return {
whichIndex: 0,
cardArr: [
{
componentName: "動(dòng)態(tài)組件一",
componentId: "one",
},{
componentName: "動(dòng)態(tài)組件二",
componentId: "two",
},{
componentName: "動(dòng)態(tài)組件三",
componentId: "three",
},{
componentName: "動(dòng)態(tài)組件四",
componentId: "four",
},
],
};
},// 又因?yàn)樾枰懈吡翣顟B(tài)樣式:默認(rèn)索引0高亮
.highLight {
box-shadow: 0 15px 30px rgba(0, 0, 0, 0.2);
transform: translate3d(0, -1px, 0);
}三、完整代碼
<template>
<div id="app">
<div class="top">
<div
class="crad"
:class="{ highLight: whichIndex == index }"
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: "動(dòng)態(tài)組件一",
componentId: "one",
},
{
componentName: "動(dòng)態(tài)組件二",
componentId: "two",
},
{
componentName: "動(dòng)態(tài)組件三",
componentId: "three",
},
{
componentName: "動(dòng)態(tài)組件四",
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>總結(jié)
到此這篇關(guān)于vue使用動(dòng)態(tài)組件實(shí)現(xiàn)TAB切換效果的文章就介紹到這了,更多相關(guān)vue動(dòng)態(tài)組件實(shí)現(xiàn)TAB切換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue實(shí)現(xiàn)tab欄切換效果
- Vue中的table表單切換實(shí)現(xiàn)效果
- vue+iview?Table表格多選切換分頁(yè)保持勾選狀態(tài)
- vue?router如何實(shí)現(xiàn)tab切換
- vue實(shí)現(xiàn)鼠標(biāo)滑動(dòng)展示tab欄切換
- Vue實(shí)現(xiàn)選項(xiàng)卡tab切換制作
- vue實(shí)現(xiàn)tab切換的3種方式及切換保持?jǐn)?shù)據(jù)狀態(tài)
- vue實(shí)現(xiàn)tab路由切換組件的方法實(shí)例
- Vue實(shí)現(xiàn)tab切換的兩種方法示例詳解
相關(guān)文章
解決vue-element-admin安裝依賴(lài)npm install報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了解決vue-element-admin安裝依賴(lài)npm install報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Vue3中使用pnpm搭建monorepo開(kāi)發(fā)環(huán)境
這篇文章主要為大家介紹了Vue3中使用pnpm搭建monorepo開(kāi)發(fā)環(huán)境示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
vue之el-upload使用FormData多文件同時(shí)上傳問(wèn)題
這篇文章主要介紹了vue之el-upload使用FormData多文件同時(shí)上傳問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
vue3?elementPlus?table實(shí)現(xiàn)列寬可拖拽功能
這篇文章主要介紹了vue3?elementPlus?table實(shí)現(xiàn)列寬可拖拽功能,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
Ant-design-vue Table組件customRow屬性的使用說(shuō)明
這篇文章主要介紹了Ant-design-vue Table組件customRow屬性的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
vue中 數(shù)字相加為字串轉(zhuǎn)化為數(shù)值的例子
今天小編就為大家分享一篇vue中 數(shù)字相加為字串轉(zhuǎn)化為數(shù)值的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
vue代理請(qǐng)求之Request?failed?with?status?code?404問(wèn)題及解決
這篇文章主要介紹了vue代理請(qǐng)求之Request?failed?with?status?code?404問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07

