Vue可自定义tab组件

在工作中我们常常要用到tab组件,如果有用第三方组件库的话一般都会有这个组件,但如果没有使用第三方组件库,或者想要自定义tab,那么或许这个无依赖的tab组件将会极大地节约你的开发时间。

如何使用?

1. 首先先安装:

    npm i vue-cus-tabs -S

2. 在new vue之前引入样式并use一下VueCusTab:

    import ‘vue-cus-tabs/style/index.css‘
    import { installCusTabs } from ‘vue-cus-tabs‘;
    Vue.use(installCusTabs);

3. 在代码中引入组件:

 <CusTabWrap>
      <template v-slot:tabBar>
        <CusTabBar :style="{‘height‘:‘50px‘}">
          <CusTabItem v-for="item in tabItems" :key="item.title">
            {{item.title}}
          </CusTabItem>
        </CusTabBar>
      </template>

      <template v-slot:tabContainer>
        <CusTabContainer>
          <CusTabContainerItem v-for="item in tabItems">
            <ul>
              <li v-for="data in item.data">
                {{data.title}}
              </li>
            </ul>
          </CusTabContainerItem>
        </CusTabContainer>
      </template>
    </CusTabWrap>
import { TabController } from ‘vue-cus-tabs‘;
    import Vue from ‘vue‘

    export default class Test extends Vue{
      public tabItems = [
        { title: ‘新闻‘, type: ‘list‘, data: [{ img: ‘‘, title: ‘list item    title‘ }] },
        { title: ‘视频‘, type: ‘block‘, data: [{ video: ‘‘, title: ‘list item     title‘ }] },
        { title: ‘视频1‘, type: ‘block‘, data: [{ video: ‘‘, title: ‘list item    title‘ }] },
      ];
      public tabController?: TabController;
      public mounted() {

        // 创建控制器
        this.tabController = new TabController({ data: this.tabItems, tabScroll: true, initIndex: 1 });
      }
    }

4. 启动Vue Cli的serve,即可看到成果。

整个组件的设计思路借鉴了flutter的tabs组件,数据的渲染交由vue完成,之后的tab控制由TabController实例来完成。

github: https://github.com/axel10/cus-tabs

npm: https://www.npmjs.com/package/vue-cus-tabs

在线演示:https://vue-cus-tabs-axel10.now.sh

原文地址:https://www.cnblogs.com/axel10/p/11731545.html

时间: 2024-08-29 21:29:37

Vue可自定义tab组件的相关文章

自定义Tab组件的实现

在上一篇博文中,我发表了自定义表格的实现,今天说下tab组件,Tab组件在MIS系统中很常用,而且实现逻辑较为简单. 不多说废话, 最终效果图如下: 以下为实现代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JS Bin</title> <style type="text/css"> .ITab { }

基于vue的自定义日历组件

如果本文帮助到你,本人不胜荣幸,如果浪费了你的时间,本人深感抱歉.希望用最简单的大白话来帮助那些像我一样的人.如果有什么错误,请一定指出,以免误导大家.也误导我. 项目github地址 线上demo地址 使用步骤: 1.安装包 cnpm i 2.运行dev npm run dev 项目目录: 自定义农历节日: yinli_festival.json { "01-06":"阴历节1", "01-10":"阴历节2", "

Vue造轮子-tab组件(下)

1. 为什么一个 new Vue 可以构造出一个 eventBus // 当我们定义了new Vue之后,可以这样用 var app = new Vue({ created(){ this.$emit() this.$on() } }) // 也可以这样用 app.$emit() app.$on() app.$off() // 那么归根结底,只要满足能触发一个事件,监听一个事件,和取消监听一个事件,那么它就是一个事件中心 eventBus eventBus.$emit() // 触发一个事件 e

vue中自定义组件(插件)

vue中自定义组件(插件) 原创 2017年01月04日 22:46:43 标签: 插件 在vue项目中,可以自定义组件像vue-resource一样使用Vue.use()方法来使用,具体实现方法: 1.首先建一个自定义组件的文件夹,比如叫loading,里面有一个index.js,还有一个自定义组件loading.vue,在这个loading.vue里面就是这个组件的具体的内容,比如: <template> <div> loading.............. </div

vue自定义select组件

1.目的 看了很多element-ui的源码,决定自己实现一个简单的select组件,遇到的几个难点,便记录下来. 2.难点一 element-ui中的select组件通过v-model可以绑定数据,但在我平时用v-model只是在input中使用过,只知道v-model可以双向绑定数据,但并不清楚其中的实现过程,所以 需要清晰的了解v-model是什么,如下. <input v-model="test"/> <input :value="test"

vue + element-ui 制作tab切换(切换vue组件,踩坑总结)

本篇文章使用vue结合element-ui开发tab切换vue的不同组件,每一个tab切换的都是一个新的组件. 1.vue如何使用element-ui 上一篇文章已经分享了如何在vue中使用element-ui创建tab组件切换内容(需要了解的朋友点击链接查看) 2.创建相应文件. a.创建父组件 src/components/tabZujian.vue b.创建自组件(被切换的组件)src/tabComponents 文件夹 + + tabComponents(目录) ---- tabZuji

教你撸一个简单的Vue自定义动态组件

components下创建 toast 文件夹, 文件夹里面创建 toast.vue 和 index.js toast.vue: <template> <div id="toastWrap" :class="[className,showAnimation ?'fadein':'fadeout',appointId==''?'fixed':'absolute']" v-if="show"> <span :class=

vue自定义分页组件---切图网

vue2.5自定义分页组件 Pagination.vue,可设置每页显示条数,带跳转框直接跳转到相应页面,亲测有用.目前很多框架自带有分页组件比如elementUI,不过在面对一个拿到PSD稿,然后重新切图,重新VUE开发的项目来说,自定义分页组件才是应万变的最佳打开方式. html <template> <div class="pagination" v-if="totalPage>1"> <span v-if="!s

Vue.js 自定义组件封装实录——基于现有控件的二次封装(以计时器为例)

在本人着手开发一个考试系统的过程中,出现了如下一个需求:制作一个倒计时的控件显示在试卷页面上.本文所记录的就是这样的一个过程. 前期工作 对于这个需求,自然我想到的是有没有现成的组件可以直接使用(本着不重复发明轮子的原则).于是我就在 GitHub 上找寻.确实找到了不少,但是与需求之间的差距还比较大.从零开始写又不太现实(时间摆在那里,加之自己的前端也是刚学,还没有从零开始手撸一个控件的能力),所以在已有组件的基础上进行二次封装便成了一个比较可行的方法(几乎也是唯一解).遂在 npm 上以 c