美文网首页
Vue组件开发系列之Tab组件

Vue组件开发系列之Tab组件

作者: vue爱好者 | 来源:发表于2018-10-30 16:06 被阅读12次

    组件源码:
    https://github.com/AntJavascript/widgetUI/tree/master/Tab

    FireShot Capture 11 - nvx - http___localhost_8080_demo#_tab.png
    组件结构代码:
    <template>
        <div class="wt-tab">
            <div class="tab">
                <ul :class="type">
                    <li v-for="(item, index) in dataSource" :key="index" @click="handle(item, index)" :class="{active:active == index}">
                        {{item.text}}
                    </li>
                </ul>
            </div>
        </div>
    </template>
    

    代码分析:

    props参数:

    props: {
        dataSource: { // 数据来源
          type: Array,
          default: () => {
            return [];
          }
        },
        currIndex: { // 当前处于第几个选项
          type: Number | String,
          default: () => {
            return 0;
          }
        },
        type: { // 组件类型,(可选)(可选值:"default", "full")
          type: String,
          default: () => {
            return 'default';
          }
        }
      }
    

    data参数:

    data () {
        return {
          active: '' // 当前处于第几个选项
        };
      }
    

    created生命周期:

    created () {
        this.active = this._props.currIndex; // 获取父组件的参数值
      }
    

    methods函数:

    methods: {
        handle (item, index) {
          this.active = index; // 设置当前选项
          this.$emit('handle', item, index); // 传值父组件
        }
      }
    

    css代码:

    .wt-tab {
         width: 100%;
         .tab {
             background: #fff;
            //  border-bottom: 1px solid #ebebeb;
             &::after {
                  transform: scaleY(.5);
                  height: 1px;
                  content: '';
                  border-bottom: 1px solid #ccc;
                  display: block;
              }
             ul {
                 display: flex;
                 font-size: 0.7rem;
                 &.default {
                     justify-content: space-around;
                 }
                 &.full {
                     justify-content: space-between;
                     li {
                         flex: 1;
                         text-align: center;
                     }
                 }
                 li {
                     height: 2rem;
                     line-height: 2rem;
                    &.active {
                        border-bottom: 2px solid #1BB5F1;
                        margin-bottom: -1px;
                        color: #1BB5F1;
                    }
                 }
             }
         }
     }
    

    组件源码:
    https://github.com/AntJavascript/widgetUI/tree/master/Tab

    相关文章

      网友评论

          本文标题:Vue组件开发系列之Tab组件

          本文链接:https://www.haomeiwen.com/subject/eblgtqtx.html