最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue使用動(dòng)態(tài)組件實(shí)現(xiàn)TAB切換效果完整實(shí)例

 更新時(shí)間:2023年05月13日 10:21:12   作者:魷魚(yú)絲2號(hào)  
在實(shí)際項(xiàng)目開(kāi)發(fā)中,我們經(jīng)常會(huì)遇到選項(xiàng)卡切換,對(duì)于一個(gè)前端工程師來(lái)說(shuō),組件化/模塊化開(kāi)發(fā)是一種必備的行為規(guī)范,下面這篇文章主要給大家介紹了關(guān)于vue使用動(dòng)態(tài)組件實(shí)現(xiàn)TAB切換效果的相關(guān)資料,需要的朋友可以參考下

一、方法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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

金湖县| 山西省| 和龙市| 周宁县| 中牟县| 永修县| 西丰县| 新闻| 梁河县| 贵定县| 滨州市| 永修县| 德庆县| 和龙市| 耒阳市| 鄂尔多斯市| 太白县| 长垣县| 腾冲县| 杨浦区| 宝应县| 喜德县| 张北县| 鄂尔多斯市| 仙桃市| 稻城县| 瓮安县| 永嘉县| 青海省| 原阳县| 平顺县| 舟山市| 潞城市| 会同县| 衡山县| 晋宁县| 承德市| 东阳市| 敦化市| 中江县| 长垣县|