美文网首页
pdd项目之tabbar选项卡

pdd项目之tabbar选项卡

作者: 夜夜夜空灵 | 来源:发表于2018-11-08 01:52 被阅读0次

做出来的效果
!(https://img.haomeiwen.com/i5617399/976eaf537a26552d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

1.把项目所需要的图标都上传到static文件夹的img文件夹下

因为这个文件夹都是存放一些项目静态资源
因为这个选项卡不是路由组件,是非路由组件,因此在src下的components文件夹下新建一个TabBar
文件夹,里面新建一个名为TabBar.vue的非路由组件

TabBar组件部分的代码

<template>
    <div class="bottom-tab">
        <span class="tab-item"  @click="switchto('/home')">
>
            <img :src="$route.path.includes('/home')?TabBarArray[0].selected:TabBarArray[0].normal" alt="">
            <span :class="{on: $route.path.includes('/home')}">首页</span>
        </span>
        <span class="tab-item" @click="switchto('/recommend')">
            <img :src="$route.path.includes('/recommend')?TabBarArray[1].selected:TabBarArray[1].normal" alt="">
            <span :class="{on: $route.path.includes('/recommend')}">推荐</span>
        </span>
        <span class="tab-item" @click="switchto('/search')">
            <img :src="$route.path.includes('/search')?TabBarArray[2].selected:TabBarArray[2].normal" alt="">
            <span :class="{on: $route.path.includes('search')}">搜索</span>
        </span>
        <span class="tab-item" @click="switchto('/chat')">
            <img :src="$route.path.includes('/chat')?TabBarArray[3].selected:TabBarArray[3].normal" alt="">
            <span :class="{on: $route.path.includes('/chat')}">聊天</span>
        </span>
        <span class="tab-item" @click="switchto('/me')">
            <img :src="$route.path.includes('/me')?TabBarArray[4].selected:TabBarArray[4].normal" alt="">
            <span :class="{on: $route.path.includes('/me')}">个人中心</span>
        </span>
    </div>
</template>

<script>
    export default{
        name:"TabBar",
        data(){
            return {
                    TabBarArray:[
                {normal:require('./../../../static/img/icon_home.png'),selected:require('./../../../static/img/icon_home_selected.png')},
                {normal:require('./../../../static/img/icon_intro.png'),selected:require('./../../../static/img/icon_intro_selected.png')},
                {normal:require('./../../../static/img/icon_search.png'),selected:require('./../../../static/img/icon_search_selected.png')},
                {normal:require('./../../../static/img/icon_chat.png'),selected:require('./../../../static/img/icon_chat_selected.png')},
                {normal:require('./../../../static/img/icon_mine.png'),selected:require('./../../../static/img/icon_mine_selected.png')}
            ]
            }
        },
        methods:{
            switchto(path){
                this.$router.replace(path);
            }
        }
    }


</script>

<style scoped lang="stylus" ref="stylesheet/stylus">
    .bottom-tab
        width 100%
        height 50px
        background-color #fff
        position fixed
        left 0
        bottom 0
        display flex 
        z-index 999
        
        .tab-item
            display flex
            flex 1
            flex-direction column
            align-items center
            justify-content center
            font-size 14px
            color #666
            
            img 
                width 35%
                margin-bottom 2px
            .on
                color red
                
</style>

主组件部分

<template>
    <div id="app">
        <router-view></router-view>
        <tab-bar></tab-bar>
    </div>
</template>

<script>

    import TabBar from './components/TabBar/TabBar'
    export default{
        name:"App",
        components:{
            TabBar
        }
    }


</script>
<style scoped lang="stylus" ref="stylesheet/stylus">
    #app
        width 100%
        height 100%
        background-color #f5f5f5
</style>

2.路由跳转方法解释

给图标均绑上一个swithto的方法,里面的参数即为路由的路径,而且配置完成路由后,增加了两个方法可供使用,router,route
当我们打印this.$router时

微信截图_20181108013352.png
我们需要调用里面的replace方法来切换路由从而达到切换页面的目的

3.选项卡中图片和字体颜色切换方法解释

在Vuetools工具中,我们发现TabBar选项卡是这样的


微信截图_20181108013854.png

我们可以把Path当作是一个突破口,比如当我们选中首页时,路径就为home,当路由地址和path中的地址一致的时候即为选中状态,之所以会用上includes()方法的原因是,之后我们会制作头部二级路由切换,那么路径就会变成/home/hot诸如此类,但是实际上我们依旧还是在home这个路由上,所以只要路径中包含/home即可以视为选中状态,图片则是,先把所需要用到的图片路径放在data数据项中保存,而图片是在本地,所以需要用到require方法把图片路径导入进来

相关文章

网友评论

      本文标题:pdd项目之tabbar选项卡

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