Vue 选项卡封装

​Vue 渐进式JavaScript 框架 基于Vue2的移动端项目:选项卡封装

目录

选项卡封装

创建组件

组件内容

使用组件

引入组件

注册组件

组件增加样式

公共样式

选项卡图标

下载图标

图标加入项目

引入图标

设置图标

另一种引入方式

放入assets

模块化引入图标

修改li样式

总结


选项卡封装

创建组件

在mycomponents中创建TabBar.vue文件:

 

组件内容

然后把选项卡内容包含在template标签中。

示例如下:

<template>
  <div>
    <!-- 声明式导航 (3之前 包含3) -->
    <!-- <ul>
      <li>
        <router-link to="films" active-class="testActive" tag="li">电影</router-link>
      </li>
      <li>
        <router-link to="cinemas">影院</router-link>
      </li>
      <li>
        <router-link to="center">我的</router-link>
      </li>
    </ul> -->

    <!-- 版本4 导航 -->
    <ul>
        <router-link to="films" custom v-slot="{navigate, isActive}">
          <li @click="navigate" :class="isActive?'testActive':''">电影</li>
        </router-link>
        <router-link to="cinemas" custom v-slot="{navigate, isActive}">
          <li @click="navigate" :class="isActive?'testActive':''">影院</li>
        </router-link>
        <router-link to="center" custom v-slot="{navigate, isActive}">
          <li @click="navigate" :class="isActive?'testActive':''">我的</li>
        </router-link>
    </ul>

    <!-- 路由容器 -->
    <router-view></router-view>
  </div>
</template>
<script>
export default {
  data () {
    return {}
  }
}
</script>
<style lang="scss" scoped>

</style>

 

使用组件

引入组件

在app.vue中引入组件。

示例如下:

<template>
  <div>
    <tabbar></tabbar>
    <!-- 路由容器 -->
    <router-view></router-view>
  </div>
</template>
<script>
import tabbar from '@/mycomponents/TabBar'
注册组件

在app.vue页面中注册tabbar组件。

示例如下:

export default {
  data () {
    return {}
  },
  components: {
    tabbar
  }
}

 

组件增加样式

在选项卡组件中 增加footer标签包含选项卡内容,然后设置选项卡样式

Height是通过49px转化的rem值,用上面rem计算公式换算。

示例如下:

<style lang="scss" scoped>
footer {
    position: fixed;
    bottom: 0;
    width: 100%;
    height: 2.722222rem;
    background: white;
    ul {
        display: flex;
        li {
            flex: 1;
            line-height: 2.722222rem;
            text-align: center;
        }
    }
}
</style>

公共样式

App.vue中公共样式

<style lang="scss">
*{
  margin:0;
  padding:0;
}
html, body {
  height:100%;
}
ul {
  list-style: none;
}
.tabActive {
  color:red;
}
</style>

 

选项卡图标

下载图标

需要下载iconfonts 从阿里的矢量图中下载。

选择官方图标库

找到图标,然后选择加入购物车

 在购物车中选择创建项目和把图标加入项目

购物车中选择font class,然后下载到本地

最后解压缩后,就是我们要的文件:

在浏览器中访问demo.index.html 

图标加入项目

在项目public下创建iconfont文件夹,然后把图标文件放进去,如下:

引入图标

在public/index.html中引入样式。

示例如下:

 

设置图标

在TabBar.vue组件的选项卡上设置图标。

示例如下:

<template>
  <footer>
    <!-- 版本4 导航 -->
    <ul>
        <router-link to="/films" custom v-slot="{navigate, isActive}">
          <li @click="navigate" :class="isActive?'tabActive':''"><i class="icon iconfont">&#xe8ba;</i>
          <span>电影</span>
          </li>
        </router-link>
        <router-link to="/cinemas" custom v-slot="{navigate, isActive}">
          <li @click="navigate" :class="isActive?'tabActive':''"><i class="icon iconfont">&#xe90a;</i>
          <span>影院</span>
          </li>
        </router-link>
        <router-link to="/center" custom v-slot="{navigate, isActive}">
          <li @click="navigate" :class="isActive?'tabActive':''"><i class="icon iconfont">&#xe8f8;</i>
          <span>我的</span>
          </li>
        </router-link>
    </ul>
  </footer>
</template>

 

另一种引入方式

放入assets

把图标文件夹放入src/assets中。

模块化引入图标

在tabBar.vue中使用import通过相对路径引入。

示例如下:

 

修改li样式

修改TabBar.vue中底部导航栏li的样式。

示例如下:

<style lang="scss" scoped>
footer {
    position: fixed;
    bottom: 0;
    width: 100%;
    height: 2.7222rem;
    background: white;
    ul {
        display: flex;
        li {
            flex: 1;
            line-height: 1.3888889rem;
            text-align: center;
            display: flex;
            flex-direction: column;
            i {
              font-size: 21px;
            }
            span {
              font-size: 10px;
            }
        }
    }
}
</style>

总结

Vue 渐进式JavaScript 框架 基于Vue2的移动端项目:选项卡封装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值