vue使用动态组件实现TAB切换效果完整实例

 更新时间:2023年05月13日 10:21:12   作者:鱿鱼丝2号  
在实际项目开发中,我们经常会遇到选项卡切换,对于一个前端工程师来说,组件化/模块化开发是一种必备的行为规范,下面这篇文章主要给大家介绍了关于vue使用动态组件实现TAB切换效果的相关资料,需要的朋友可以参考下

一、方法1:使用Vant组件库的tab组件

Vant 2 - Mobile UI Components built on Vue

二、 方法2:手动创建tab切换效果

1.在components文件夹下创建切换的.vue页面、引入使用

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点击的标签,下面放组件呈现对应内容

// 然后使用v-for循环出来呈现
<template>
   <div id="app">
      <div class="top">
      <!-- 放置tab点击标签 -->
         <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">
        <!-- 放置动态组件... -->
       <!-- keep-alive缓存组件,这样的话,组件就不会被销毁,DOM就不会被重新渲染,
       浏览器也就不会回流和重绘,就可以优化性能。不使用的话页面加载就会慢一点 -->
       <keep-alive>
         <component :is="componentId"></component>
       </keep-alive>
      </div>
   </div>
</template>

3.写好上面的tab点击标签,定义数据修改样式

// 首先我们在data中定义数组cardArr存放点击tab的数据
data() {
   return {
      whichIndex: 0,
      cardArr: [
        {
          componentName: "动态组件一",
          componentId: "one",
        },{
          componentName: "动态组件二",
          componentId: "two",
        },{
          componentName: "动态组件三",
          componentId: "three",
        },{
          componentName: "动态组件四",
          componentId: "four",
        },
      ],
    };
},
// 又因为需要有高亮状态样式:默认索引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: "动态组件一",
          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使用window.open()跳转页面的代码案例

    vue使用window.open()跳转页面的代码案例

    这篇文章主要介绍了vue中对window.openner的使用,vue使用window.open()跳转页面的代码案例,本文通过实例代码给大家详细讲解,需要的朋友可以参考下
    2022-11-11
  • Element UI框架中巧用树选择器的实现

    Element UI框架中巧用树选择器的实现

    这篇文章主要介绍了Element UI框架中巧用树选择器的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • laravel5.4+vue+element简单搭建的示例代码

    laravel5.4+vue+element简单搭建的示例代码

    本篇文章主要介绍了laravel5.4+vue+element简单搭建的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • vue-lazyload使用总结(推荐)

    vue-lazyload使用总结(推荐)

    vue项目用到vue-lazyload做图片懒加载,这篇文章主要介绍了vue-lazyload使用总结,解决这个插件的坑,非常具有实用价值,需要的朋友可以参考下
    2018-11-11
  • vue3封装京东商品详情页放大镜效果组件

    vue3封装京东商品详情页放大镜效果组件

    这篇文章主要为大家详细介绍了vue3封装类似京东商品详情页放大镜效果组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Vue-Access-Control 前端用户权限控制解决方案

    Vue-Access-Control 前端用户权限控制解决方案

    Vue-Access-Control是一套基于Vue/Vue-Router/axios 实现的前端用户权限控制解决方案。这篇文章主要介绍了Vue-Access-Control:前端用户权限控制解决方案,需要的朋友可以参考下
    2017-12-12
  • 详解vue通过NGINX部署在子目录或者二级目录实践

    详解vue通过NGINX部署在子目录或者二级目录实践

    这篇文章主要介绍了详解vue通过NGINX部署在子目录或者二级目录实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • vue 利用路由守卫判断是否登录的方法

    vue 利用路由守卫判断是否登录的方法

    今天小编就为大家分享一篇vue 利用路由守卫判断是否登录的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • 仿vue-cli搭建属于自己的脚手架的方法步骤

    仿vue-cli搭建属于自己的脚手架的方法步骤

    这篇文章主要介绍了仿vue-cli搭建属于自己的脚手架的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 详解vue+css3做交互特效的方法

    详解vue+css3做交互特效的方法

    本篇文章主要介绍了详解vue+css3做交互特效的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11

最新评论