zoukankan      html  css  js  c++  java
  • vue 封装tarbar组件

    1。新建index.vue。引入tarbar组件

    <template>
      <div class="index">
        <router-view></router-view>
        <TabBar :data="tabbarData"/>
      </div>
    </template>
    
    <script>
    import TabBar from "../components/TabBar";
    export default {
      name: "index",
      data() {
        return {
          tabbarData: [
            { title: "首页", icon: "home", path: "/home" },
            { title: "订单", icon: "file-text-o", path: "/order" },
            { title: "我的", icon: "user", path: "/me" }
          ]
        };
      },
      components: {
        TabBar
      }
    };
    </script>
    
    <style scoped>
    .index {
      width: 100%;
      height: calc(100% - 45px);
    }
    </style>

    2.新建tabar组件

    <template>
      <div class="tabbar">
        <router-link
          class="tab-item"
          v-for="(item,index) in data"
          :key="index"
          :to="item.path"
          active-class="is-selected"
        >
          <div class="tab-item-icon">
            <i :class="'fa fa-' + item.icon"></i>
          </div>
          <div class="tab-item-label">{{item.title}}</div>
        </router-link>
      </div>
    </template>
    
    <script>
    export default {
      name: "tabbar",
      props: {
        data: Array
      }
    };
    </script>
    
    <style scoped>
    .tabbar {
      height: 45px;
      box-sizing: border-box;
       100%;
      position: fixed;
      bottom: 0;
      background-image: linear-gradient(
        180deg,
        #d9d9d9,
        #d9d9d9 50%,
        transparent 0
      );
      background-size: 100% 1px;
      background-repeat: no-repeat;
      background-position: 0 0;
      background-color: #fafafa;
      display: flex;
      text-align: center;
    }
    .tab-item {
      display: block;
      padding: 3px 0;
      flex: 1;
    }
    .tab-item-icon {
       20px;
      height: 20px;
      margin: 0 auto 5px;
    }
    .tab-item-icon i {
      font-size: 16px;
    }
    .tab-item-label {
      color: inherit;
      font-size: 10px;
      line-height: 1;
    }
    a {
      text-decoration: none;
      color: #999;
    }
    .is-selected {
      color: #009eef;
    }
    </style>
    

      。在router.js

    import Vue from 'vue'
    import Router from 'vue-router'
    Vue.use(Router)
    export default new Router({
      routes: [
        {
          path: '/',
          // name: 'index',
          component: () => import('@/components/index.vue'),
                children:[
            {
              path: '',
              redirect: '/home'
            },
            {
              path: '/home',
              name: 'home',
              component: ()=>import('@/components/home')
            },
            {
              path: '/order',
              name: 'order',
              component: ()=>import('@/components/order')
            },
            {
              path: '/me',
              name: 'me',
              component: ()=>import('@/components/My')
            },
          ]
        }
    
      ],
    
    })

    最后引入公共的css

    <link
    href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
    rel="stylesheet"
    />

  • 相关阅读:
    TCP/IP协议栈之QEMU
    FreeRTOS-Plus-CLI中添加一个自己的命令行
    FreeRTOS A57
    log日志库
    函数解读:ioremap / ioremap_nocache / ioremap_wc / ioremap_wt
    Makefile 使用小结
    41. 缺失的第一个正数(First Missing Positive)
    42. 接雨水(Trapping Rain Water)
    关于C++内联和静态成员函数的问题
    C++11 线程并发问题
  • 原文地址:https://www.cnblogs.com/xzhce/p/13690818.html
Copyright © 2011-2022 走看看