VUE移动端指定页面隐藏底部导航条

在写移动端项目的时候,一般情况下一级页面是需要底部导航的,所以说就有些页面是不需要底部导航条的,比如说,详情页就不得要底部导航。

利用路由元(meta)设置参数

先创建底部的导航栏
conponents文件夹下面创建Tabbar.vue,我用的是vantTabbar组件

<template>
    <div class="tabbar">
        <van-tabbar v-model="active" :placeholder="true" safe-area-inset-bottom route>
            <van-tabbar-item icon="home-o" to="/label1">标签1</van-tabbar-item>
            <van-tabbar-item icon="search" to="/label2">标签2</van-tabbar-item>
            <van-tabbar-item icon="friends-o" to="/label3">标签3</van-tabbar-item>
            <van-tabbar-item icon="setting-o" to="/label4">标签4</van-tabbar-item>
        </van-tabbar>
    </div>
</template>

<script>
    export default {
        name: "Tabbar",
        data(){
            return {
                active: 2
            }
        }
    }
</script>

<style scoped>

</style>

在路由的配置中设置meta参数
TabbarShow就是控制该页面需不需要显示底部导航栏的

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router);

export default new Router({
    routes: [
        {
            path: '/label1',
            name: 'Label1',
            component: resolve => require(['@/components/label1'], resolve),
            meta: {
                TabbarShow: true // 需要显示 底部导航
            }
        },
        {
            path: '/label2',
            name: 'Label2',
            component: resolve => require(['@/components/label2'], resolve),
            meta: {
                TabbarShow: false // 不需要显示 底部导航
            }
        },
        {
            path: '/label3',
            name: 'Label3',
            component: resolve => require(['@/components/label3'], resolve),
            meta: {
                TabbarShow: true // 需要显示 底部导航
            }
        },
        {
            path: '/label4',
            name: 'Label4',
            component: resolve => require(['@/components/label4'], resolve),
            meta: {
                TabbarShow: false // 不需要显示 底部导航
            }
        }
    ]
})

App.vue中写

<template>
    <div id="app">
        <!--路由出口-->
        <router-view></router-view>

        <!--引入底部导航组件 利用路由里面设置的meta参数来控制其显示-->
        <Tabbar v-if="$route.meta.TabbarShow"></Tabbar>
    </div>
</template>

<script>
    import Tabbar from "./components/Tabbar";

    export default {
        name: 'App',
        components: {
            Tabbar
        },
        data() {
            return {}
        },
    }
</script>

<style>
    * {
        margin: 0;
        padding: 0;
    }

    #app {
        padding-bottom: 50PX;
    }
</style>

如图:
label1页面

  • label1页面有底部导航栏
  • label2页面没有底部导航栏
  • label3页面有底部导航栏
  • label1页面没有有底部导航栏

在这里插入图片描述在这里插入图片描述

使用watch监听导航切换来控制导航栏的有无

在App.vue

<template>
    <div id="app">
        <!--路由出口-->
        <router-view></router-view>

        <!--引入底部导航组件 利用路由里面设置的meta参数来控制其显示-->
        <!--<Tabbar v-if="$route.meta.TabbarShow"></Tabbar>-->

        <Tabbar v-if="show"></Tabbar>

    </div>
</template>

<script>
    import Tabbar from "./components/Tabbar";

    export default {
        name: 'App',
        components: {
            Tabbar
        },
        data() {
            return {
                show: true // 控制Tabbar组件的显隐状态
            }
        },
        watch: { // 监听路由变化  跳转到Label2  和 Label4页面就隐藏导航栏
            $route (to) {
               if (to.name === 'Label2' || to.name === 'Label4' ) {
                   this.show = false
               }
            }
        },
    }
</script>

<style>
    * {
        margin: 0;
        padding: 0;
    }

    #app {
        padding-bottom: 50PX;
    }
</style>

在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
对于移动端的登录页面,使用Vue可以轻松实现响应式布局和交互效果。以下是一个简单的示例: ```vue <template> <div class="login-container"> <h1>登录</h1> <form @submit.prevent="login"> <label>用户名:</label> <input type="text" v-model="username" required> <label>密码:</label> <input type="password" v-model="password" required> <button type="submit">登录</button> </form> </div> </template> <script> export default { data() { return { username: '', password: '' }; }, methods: { login() { // 在这里处理登录逻辑 // 可以发送请求到后端验证用户名和密码 // 并进行相应的处理 } } }; </script> <style scoped> .login-container { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; } h1 { margin-bottom: 1rem; } form { display: flex; flex-direction: column; align-items: center; } label { margin-bottom: 0.5rem; } input { padding: 0.5rem; margin-bottom: 1rem; } button { padding: 0.5rem 1rem; } </style> ``` 在这个示例中,我们创建了一个包含用户名和密码输入框的登录表单。使用`v-model`指令将输入框与组件的数据进行双向绑定,以便在`login`方法中获取用户输入的值。在提交表单时,我们可以在`login`方法中处理登录逻辑,例如发送登录请求到后端进行验证。 此外,使用CSS样式对页面进行简单的布局和样式设置,使其在移动设备上呈现良好的用户体验。 你可以根据需求进一步定制登录页面的样式和逻辑。希望这个示例能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值