【前端】Vue项目:旅游App-(6)city:隐藏TabBar的2种方法

2023-11-06

目标

city页是点击上篇“广州”位置所跳转的页面。此页面要隐藏TabBar。

在这里插入图片描述

过程与代码

city页要隐藏TabBar。我们这里有两种隐藏的方法。

方法1:通过路由隐藏

router有一个属性meta

有时,你可能希望将任意信息附加到路由上,如过渡名称、谁可以访问路由等。这些事情可以通过接收属性对象的meta属性来实现,并且它可以在路由地址和导航守卫上都被访问到。

来自:路由元信息

我们可以将该页面是否显示TabBar作为一个属性写进router的meta中。

index.js,在route中添加:

{
    path:'/city',
    component:()=>import("@/views/city/city.vue"),
    meta:{
        hideTabBar:true
    }
}

注意,我们并没有增加home、message等页面的meta,因为他们需要TabBar,在没有定义meta的情况下默认为undefined,转换成布尔类型是false。也就是说,要隐藏TabBar的要主动添加值为true的属性,之后在v-if判断中取反(!)即可。

省流:需要TabBar默认是false,则不需要的主动添加为true。

App.vue:
在引入TabBar组件的地方添加if判断:用useRoute()得到当前跳转的路由对象,看它的hideTabBar属性。

<template>
    <div class="app">
        <router-view/>
        <tab-bar v-if="!route.meta.hideTabBar"></tab-bar>
    </div>
</template>

<script setup>
import { useRoute } from 'vue-router';
import tabBar from './components/tab-bar/tab-bar.vue';

const route=useRoute()
</script>

<style lang="less" scoped>

</style>

效果:

city:

无TabBar。
在这里插入图片描述
home:有TabBar。

在这里插入图片描述

方法2:用样式隐藏

上述方法可以实现隐藏TabBar的需求,但是有点复杂。接下来我们介绍一个稍微简单的方法。

  • 给city组件设置z-index,让它大于TabBar的z-index(TabBar没有设置z-index默认为1)。注意,若想让z-index生效则要设置position。
  • 让city占满整个屏幕
  • 设置背景色挡住TabBar

到这里TabBar已经可以隐藏了,但是city组件的内容可能会超出屏幕,我们要设置滚动条:

  • overflow-y: auto;
.city {
    // 占满整个屏幕
    height: 100vh;
    // 有position,z-index才生效
    // 这里如果是absolute则不生效,可能与TabBar组件相关样式有关
    position: relative;
    // TabBar的z-index默认1
    z-index: 9;
    // 背景色挡住TabBar
    background-color: #fff;
    // y轴方向溢出:滚动条
    overflow-y: auto;
}

效果:

在这里插入图片描述

对方法2封装

到这里我们已经可以用css实现隐藏TabBar。但是,我们不会只有city这一个页面需要隐藏TabBar。为了未来开发的方便,我们要将此css封装。

把它写进common.css,命名为top-page,以后哪个组件需要隐藏TabBar,我们在它的div上增加这个类。

css:

/* 隐藏TabBar的类 */
.top-page {
    /* 占满整个屏幕 */
    height: 100vh;
    /* 有position,z-index才生效
     这里如果是absolute则不生效,可能与TabBar组件相关样式有关 */
    position: relative;
    /* TabBar的z-index默认1 */
    z-index: 9;
    /* 背景色挡住TabBar */
    background-color: #fff;
    /* y轴方向溢出:滚动条 */
    overflow-y: auto;
}

html增加类:

<div class="city top-page">

效果:

在这里插入图片描述

总代码

修改的文件

在这里插入图片描述

common.css

添加封装好的隐藏TabBar的类。

:root {
    /* 主题颜色 */
    --primary-color: #ff9854;
}

body {
    font-size: 14px;
}

/* 隐藏TabBar的类 */
.top-page {
    /* 占满整个屏幕 */
    height: 100vh;
    /* 有position,z-index才生效
     这里如果是absolute则不生效,可能与TabBar组件相关样式有关 */
    position: relative;
    /* TabBar的z-index默认1 */
    z-index: 9;
    /* 背景色挡住TabBar */
    background-color: #fff;
    /* y轴方向溢出:滚动条 */
    overflow-y: auto;
}

index.js

添加跳转到city页的路由。

import {createRouter,createWebHashHistory} from 'vue-router'

const router=createRouter({
    history:createWebHashHistory(),
    routes:[
        {
            path:'/',
            redirect:'/home' //重定向到home
        },
        {
            path:'/home',
            component:()=>import("@/views/home/home.vue")
        },
        {
            path:'/favor',
            component:()=>import("@/views/favor/favor.vue")
        },
        {
            path:'/order',
            component:()=>import("@/views/order/order.vue")
        },
        {
            path:'/message',
            component:()=>import("@/views/message/message.vue")
        },
        {
            path:'/city',
            component:()=>import("@/views/city/city.vue")
        }
    ]
})

export default router

city.vue

只是新建了页面并添加了top-page类,还没开始开发。

<template>
    <div class="city top-page">
        <h2>city</h2>
    </div>
</template>

<script setup>

</script>

<style lang="less" scoped>

</style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【前端】Vue项目:旅游App-(6)city:隐藏TabBar的2种方法 的相关文章

随机推荐

  • 对象的内存布局

    Hotspot虚拟机中 对象在内存中存储的布局可以分为三块区域 对象头 Header 实例数据 Instance Data 对齐填充 Padding 对象头 比如hash码 对象所属的年代 对象锁 锁状态标识 偏向锁线程ID 偏向时间 数组
  • wireshark display reference: https://www.wireshark.org/docs/dfref/

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Display Filter Reference Wireshark s most powerful feature is its vast array of displa
  • Kruise Rollout:基于 Lua 脚本的可扩展流量调度方案

    前言 Kruise Rollout 1 是 OpenKruise 社区开源的渐进式交付框架 Kruise Rollout 支持配合流量和实例灰度的金丝雀发布 蓝绿发布 A B Testing 发布 以及发布过程能够基于 Prometheus
  • unable to access ‘https://gitee.com/XXX.git/‘: Failed to connect to 127.0.0.1port 7890: Connection r

    问题 在gitee拉取代码时 出现 unable to access https gitee com XXX git Failed to connect to 127 0 0 1port 7890 Connection refused的错误
  • 第五章 Vue组件化

    5 1 组件的概念 组件 component 是 Vue js 最强大的功能之一 Vue 中的组件化开发就是把网页的重复代码抽取出来 封装成一个个可复用的视图组件 然后将这些视图组件拼接到一块就构成了一个完整的系统 这种方式非常灵活 可以极
  • 知识蒸馏综述: 知识的类型

    GiantPandCV引言 简单总结一篇综述 Knowledge Distillation A Survey 中的内容 提取关键部分以及感兴趣部分进行汇总 这篇是知识蒸馏综述的第一篇 主要内容为知识蒸馏中知识的分类 包括基于响应的知识 基于
  • 太太太好用了!12款论文润色神器,SCI、EI论文写作必看

    SCI EI等期刊 会议论文现在大都需要英文写作 而非英语母语作者在写作上往往出现词不达意 描述模糊 句式混乱 累赘拖沓等现象 但是 期刊并不会因为作者母语不是英语就降低对语言的要求 并且审稿人很可能会因为语言的问题而低估了科学发现本身的意
  • python ddt模块

    python数据驱动模块ddt 一 安装 pip install ddt 二 使用 参考文章 https www cnblogs com miniren p 7099187 html 1 传入一个参数 import unittest fro
  • [网鼎杯 2020 青龙组]singal详细题解--VMP 直接逆向,angr模拟执行,ponce符号化

    文章目录 直接逆向 提取opcode 获取指令执行流 getflag 注意 使用Angr 使用Ponce插件 安装并配置Ponce 具体操作 参考资料 直接逆向 提取opcode 主函数并不复杂 关键内容在vm opcode中 先提取出ma
  • BIG5, GB(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char说明与区别

    汉语unicode编译方式 BIG5是繁体规范 GB是简体规范 GB是大陆使用的国标码 BIG5码 又叫大五码 是台湾使用的繁体码 BIG5编码 GB编码 GB2312 GBK Unicode编码 UTF8 WideChar MultiBy
  • Cocos2D-x游戏开发之十九:瓦块地图之碰撞检测

    昨天我们有了精灵和背景 并且精灵可以跑动了 但是我们不能让精灵无穷无尽地跑下去吧 于是今天我们要在地图上添加一些障碍物了 首先打开精灵的TMX地图 然后我们自定义一个32X32像素的图片添加到图层中 然后设置此图层的属性为 collidab
  • JetBrains plugin 的几个坑

    官方文档 https www jetbrains org intellij sdk docs basics getting started html 流程说明 https github com JetBrains intellij sdk
  • 记vscode+vuter+eslint 自动保存后使用eslint格式化设置

    vue cli 4 1 2 使用vue cli创建项目 命令行输入 vue ui 打开vue的后台管理创建项目 创建项目的时候记得设置 这样后面的时候会有单独的配置文件 不用在package json里面修改了 创建以后打开vscode 安
  • python分布爬虫基础知识day2

    url详解 URL是Uniform Resource Locator的简写 统一资源定位符 一个URL由以下几部分组成 scheme host port path query string xxx anchor scheme 代表的是访问的
  • mybatis类型转化问题:Error querying database. Cause: java.lang.NumberFormatException: For input string: “X“

    问题mappaer中if判断语句失效 xxxMapper xml
  • RestHighLevelClient API使用举例

    这里写自定义目录标题 直接来例子 新的改变 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左 居右 SmartyPants 创
  • jsp导出word 带图片

    1 将word另存为html格式 然后将html格式的文件另存为jsp格式 2 在jsp页面中添加表头 3 将输出的内容加到对应的列 4 输出的图片从数据库中取出 上传到服务器的临时目录下 获取图片的绝对路径 将绝对路径输出到页面 Blob
  • JavaScript-数组操作方法汇总

    一直以来都想把js中操作数组的所有方法进行一个汇总 今天终于完成了 希望可以给大家带来一些便利 一 ES5数组操作方法 转换方法 toString 返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串 toLocaleString
  • 医院信息管理系统/医院管理系统的设计与实现

    摘 要 21世纪的今天 随着社会的不断发展与进步 人们对于信息科学化的认识 已由低层次向高层次发展 由原来的感性认识向理性认识提高 管理工作的重要性已逐渐被人们所认识 科学化的管理 使信息存储达到准确 快速 完善 并能提高工作管理效率 促进
  • 【前端】Vue项目:旅游App-(6)city:隐藏TabBar的2种方法

    文章目录 目标 过程与代码 方法1 通过路由隐藏 方法2 用样式隐藏 对方法2封装 总代码 修改的文件 common css index js city vue 目标 city页是点击上篇 广州 位置所跳转的页面 此页面要隐藏TabBar