vue: 实现移动端tabbar组件

步骤看代码

思路描述
1.tabbar单文件组件
2 在根组件中注册引入使用
3.1 watch监听$route,切换路由控制显示隐藏
3.2 mounted中,页面刷新时控制显示隐藏

一: 组件

<template >
  <!-- 一:写好tabar组件单文件组件-->
  <div class="tabbar">
    <div class="item active">
      <div class="item__icon">
        <i class="iconfont icon-kecheng"></i>
      </div>
      <div class="item__text">在线课堂</div>
    </div>
    <div class="item">
      <div class="item__icon">
        <i class="iconfont icon-defaultHead"></i>
      </div>
      <div class="item__text">我的</div>
    </div>
  </div>
</template>

<script>
export default {
}
</script>

<style lang='stylus' scoped>
.tabbar
  position absolute
  left 0
  right 0
  bottom 0
  display flex
  background-color #fff
  .item
    flex 1
    padding 0.1rem 0
    display flex
    flex-direction column
    align-items center
    .item__icon
      font-size 0
      .iconfont
        font-size 0.37rem
        color #333
    .item__text
      margin-top 0.15rem
      color 0.28rem
      font-size 0.28rem
  .active
    .item__icon .iconfont, .item__text
      color #1DA7E8
</style>

2.在根组件app.vue中控制显示隐藏

<template>
  <div id="app">
    <router-view />
    <TAbbar v-show="showFlag" />
  </div>
</template>

<script>
import TAbbar from '@/components/TAbbar'
export default {
  name: 'app',
  data: function () {
    return {
      showFlag: true
    }
  },
  // 二:注册引入使用
  components: {
    TAbbar
  },
  // 三: 控制显示
  watch: {
    // 2.1 watch监听$route,切换路由是显示隐藏
    $route (to, from) {
      if (to.name === 'online-class' ||
        to.name === 'mine') {
        this.showFlag = true
      } else {
        this.showFlag = false
      }
    }
  },
  mounted () {
    // 2.2 mounted中,页面刷新时显示隐藏
    // 有一个满足就显示
    if (this.$route.name === 'online-class' ||
      this.$route.name === 'mine'
    ) {
      this.showFlag = true
    } else {
      this.showFlag = false
    }
  }
}
</script>

<style lang='stylus'>
@import url('~@/assets/styl/base.styl')
@import url('~@/assets/iconfont/iconfont.css')
</style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值