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

news2024/11/11 18:14:41

文章目录

    • 目标
    • 过程与代码
      • 方法1:通过路由隐藏
      • 方法2:用样式隐藏
      • 对方法2封装
    • 总代码
      • 修改的文件
      • common.css
      • index.js
      • city.vue

目标

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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/141504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Effective Objective - C】—— 读书笔记(五)

【Effective Objective - C】—— 读书笔记&#xff08;五&#xff09; 内存管理 文章目录【Effective Objective - C】—— 读书笔记&#xff08;五&#xff09;内存管理29.理解引用计数引用计数工作原理属性存取方法中的内存管理自动释放池保留环要点30.以ARC简化引用计数使…

Qt扫盲-QSystemTrayIcon理论总结

QSystemTrayIcon理论总结一、概述二、使用对象三、使用四、常用函数介绍1. 静态函数2. 公共槽函数3. 信号一、概述 现代操作系统通常在桌面上提供一个特殊的区域&#xff0c;称为系统托盘或通知区域&#xff0c;长期运行的应用程序可以在这里显示图标和短消息。什么意思呢&…

【Spring】1. Java对象序列化和反序列化

1. 概念 1.1 序列化 将数据结构或对象转换成二进制字节流的过程 1.2 反序列化 序列化的反过程把二进制字节流恢复为数据结构或对象的过程1.3 序列化的目的&#xff1a; 通过网络传输对象或者说是将对象存储到文件系统、数据库、内存中。 2. 为什么要进行序列化&#xff1f;&…

【Linux】Linux开发工具(一)——vim工具

作者&#xff1a;一个喜欢猫咪的的程序员 专栏&#xff1a;《Linux》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 目录 1.什么是vim 1.1什么是vim 1.2vim和vi的区别&#xff1a; 2.vim基础 2.…

字符串的模式匹配

字符串的模式匹配引言应用方法一 暴力匹配算法 (C语言实现)程序实现暴力算法思想暴力算法的时间复杂度方法二 KMP 算法程序实现KMP 算法思想KMP 算法的时间复杂度暴力匹配算法 vs KMP 算法next 数组的训练KMP 算法的优化next 数组 转换成 nextval 数组的思想引言 在我们日常生…

第12章 角色页的修改、添加

1 定义src\components\Users\EditRole.vue <template> <el-dialog width"30%"> <!-- <span>{{propParent}}</span> --> <template #header> <div class"my-header"> <h1 style"margin: 0px; padding: …

快速指南 :ESP-IDF 自定义以太网 PHY 驱动程序

“我想用我最喜欢的芯片开始新的产品设计&#xff0c;但它断货了&#xff01;哦&#xff0c;不&#xff01;我必须设计一个新的 PCB&#xff0c;并重新开发驱动程序&#xff01;”如今&#xff0c;每个设计师都非常清楚这种感觉…好消息是&#xff0c;至少在 ESP-IDF 以太网 PH…

[C语言]浮点型在内存中的存储

在上一篇文章&#xff0c;我们讲述了整型在内存中的存储&#xff0c;这篇文章我们就一起来看一下“浮点型在内存中的存储” 回顾&#xff1a;整型在内存中的存储[C语言]和我一起来认识“整型在内存中的存储”_HY_PIGIE的博客-CSDN博客 目录 1.浮点数家族 2.整型和浮点型的存储…

教你从零开始搭建自己的魔兽世界服务器

首先需要一份 WOW 的程序底包:1底包使用方法: 解压后,放到 d: 目录即可, 如下图 &#xff08;最好是D盘下 因为有很多东西都是D:/连接的 &#xff09;2运行http-mysql/下的文件INIT.CM_重命名为INIT.CMD 运行3设置登录器下载 &#xff0c;在http-mysql/htdocs下创建DOWNLOAD文件…

再次改进MBR(从磁盘读入Loader加载器)

文章目录前言前置知识代码说明实验操作前言 本博客记录《操作系统真象还原》第二章第2个实验操作~ 实验环境&#xff1a;ubuntu18.04VMware &#xff0c; Bochs下载安装 实验内容&#xff1a;从磁盘读入Loader加载器 实验思路&#xff1a; MBR 受到512字节大小的限制&#…

kernel pwn gdb调试

前言 对于Linux的二进制程序&#xff0c;gdb调试是十分重要的&#xff0c;可以清楚的了解程序是如何运行的&#xff0c;这里单独拉一篇记录我在kernel pwn中遇到的一些调试 GDB选择 在三大件pwndbg,gef,peda中&#xff0c;用了一圈下来感觉gef和pwndbg都挺好 gdb安装 简单…

PaddleNLP教程文档

文章目录一、快速开始1.1 安装PaddleNLP并 加载数据集1.2 数据预处理1.3 加载预训练模型1.4 设置评价指标和训练策略1.5 模型训练与评估1.6 模型预测二、数据处理2.1 整体介绍2.2 加载内置数据集2.3 自定义数据集2.3.1 从本地文件创建数据集2.3.2 paddle.io.Dataset/IterableDa…

OpenShift Security - 用 RHACS 为应用自动生成 NetworkPolicy

《OpenShift / RHEL / DevSecOps / Ansible 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.12 RHACS 3.73.1 环境中验证 文章目录什么是 NP-Guard用 NP-Guard 自动生成 NetworkPolicy参考什么是 NP-Guard NP-Guard 是 IBM 发起的一个开源项目&#xff0c;用来自动创建 …

WindowsTerminal 安装 oh-my-posh

文章目录1 前言2 安装过程3 Posh Themes 自定义主题参考1 前言 在Linux中&#xff0c;有非常好用的oh-my-zsh&#xff0c;最近使用WindowsTerminal时想想有没有和oh-my-zsh相同好用的插件呢&#xff0c;答案是&#xff1a;oh-my-posh 2 安装过程 进入最新版PowerShell&#…

干货 | 解决 App 自动化测试的常见痛点(弹框及首页启动加载完成判断处理)

1. 常见痛点App 自动化测试中有些常见痛点问题&#xff0c;如果框架不能很好的处理&#xff0c;就可能出现元素定位超时找不到的情况&#xff0c;自动化也就被打断终止了。很容易打消做自动化的热情&#xff0c;导致从入门到放弃。比如下面的两个问题&#xff1a;一是 App 启动…

【代码题】链表面试题

目录 1.链表分割 2.相交链表 3.环形链表 4.环形链表 II 1.链表分割 点击进入该题 现有一链表的头指针 ListNode* pHead&#xff0c;给一定值x&#xff0c;编写一段代码将所有小于x的结点排在其余结点之前&#xff0c;且不能改变原来的数据顺序&#xff0c;返回重新排列后的…

国内注册Steam账号的快捷方法

本文介绍在国内注册Steam账号的快速、简便方法。 目前&#xff0c;在国内注册新的Steam账号变得越来越麻烦&#xff1b;尤其在最近&#xff0c;无论是无休止的谷歌人机身份验证&#xff0c;还是无法收到的验证邮件&#xff0c;都使得新建一个Steam账号与原来相比变得更加困难。…

[Linux_]make/Makefile

[Linux_]make/Makefile 心有所向&#xff0c;日复一日&#xff0c;必有精进专栏&#xff1a;《Linux_》作者&#xff1a;沂沐沐目录 [Linux]make/Makefile 前言 一、Mikefile 二、如何写Mikefile文件 三、原理 四、项目清理 报错&#xff1a;missing separator 前言 一个工…

Linux 命令

最基础的命令 1.我是谁 我用什么账号登录 whoami 2.我在那 在那个目录下 pwd 3.环顾四周 1.ll展示详细信息 2.ls 展示文件名称 4.cd 想去那 改变目录 cd 回家 cd ./ 定位到当前目录 cd../ 上级目录 cd../../上两级目录。 5.切换用户 su 从普通用户切换到root用户的…

C#应用程序配置文件(XML序列化) - 开源研究系列文章

上次写了一个C#线程池及管理器的博文( C#开发的线程池和管理器 - 开源研究系列文章 )&#xff0c;收到了不小的浏览量&#xff0c;在此感谢各位网友的支持。这次将另一个功能放出来单独讲解&#xff1a;C#应用程序的配置文件&#xff0c;使用的是XML文件保存程序的配置信息&…