【前端】Vue项目:旅游App-(3)TabBar:点击active效果、点击路由跳转

news2024/10/4 5:32:20

文章目录

    • 目标
    • 代码与过程
      • 设置active主题颜色
      • 添加点击active效果
      • 点击路由跳转
    • 效果
    • 总代码
      • 修改或新增的文件
      • common.css
      • index.css
      • tab-bar.vue

目标

在这里插入图片描述

  • 添加点击active效果
  • 实现点击路由跳转效果

上一篇TabBar搭建:【前端】Vue项目:旅游App-(2)TabBar:搭建TabBar、循环获取动态数据、相关工具封装

代码与过程

设置active主题颜色

设置主题颜色,这样每次用到这个颜色可以直接用变量代替。

common.css:

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

body {
    font-size: 14px;
}

在index.css中引入common.css:

@import './reset.css';
@import './common.css';

添加点击active效果

我们要用一个currentIndex 来记录当前点击的元素:注意,要响应式ref

import {ref} from 'vue'

// 当前点的是currentIndex,把对应的index赋值给currentIndex
const currentIndex=ref(0)

在html中动态添加class:若当前index是currentIndex则有active。
同时,要监听点击,若点击则把对应的index赋值给currentIndex。
v-ifv-else判断是否要显示active效果。

<template v-for="(item, index) in tabbarData">
    <!-- 若点的是当前的元素则动态添加class -->
    <div class="tab-bar-item" :class="{active:currentIndex===index}" @click="clickItem(index)">
        <!-- 点到哪里亮哪里 -->
        <img v-if="currentIndex===index" :src="getAssetsUrl(item.imageActive)" alt="">
        <img v-else="currentIndex!==index" :src="getAssetsUrl(item.image)" alt="">
        <div class="text">{{ item.text }}</div>
    </div>
</template>

监听点击的函数:

function clickItem(index){
    currentIndex.value=index
}

到这里,点击显示active效果已经完成了。

点击路由跳转

const router=useRouter()

function clickItem(index,item){
    currentIndex.value=index
    router.push(item.path)
}

效果

在这里插入图片描述

总代码

修改或新增的文件

在这里插入图片描述

common.css

定义主题颜色。

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

body {
    font-size: 14px;
}

index.css

引入common.css:

@import './reset.css';
@import './common.css';

tab-bar.vue

增加点击active效果。
实现点击路由跳转效果。

<template>
    <div class="tab-bar">
        <template v-for="(item, index) in tabbarData">
            <!-- 若点的是当前的元素则动态添加class -->
            <div class="tab-bar-item" :class="{active:currentIndex===index}" @click="clickItem(index,item)">
                <!-- 点到哪里亮哪里 -->
                <img v-if="currentIndex===index" :src="getAssetsUrl(item.imageActive)" alt="">
                <img v-else="currentIndex!==index" :src="getAssetsUrl(item.image)" alt="">
                <div class="text">{{ item.text }}</div>
            </div>
        </template>
    </div>
</template>

<script setup>
import tabbarData from '@/assets/data/tabbarData'
import { getAssetsUrl } from '@/utils/load_assets'
import {ref} from 'vue'
import {useRouter} from 'vue-router'

// 当前点的是currentIndex,把对应的index赋值给currentIndex
const currentIndex=ref(0)
const router=useRouter()

function clickItem(index,item){
    currentIndex.value=index
    router.push(item.path)
}

</script>

<style lang="less" scoped>
.tab-bar {
    // fixed 绝对位置 位于浏览器窗口的位置
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: 55px;

    // flex布局,
    display: flex;

    // 浅浅的上边缘
    border-top: 1px solid #f3f3f3;

    .tab-bar-item {
        // 每一个item各占1个位置:平分所有位置
        flex: 1;

        // 对于每个item里面的img和text
        // 要求上下排列,要求他们居中,所以flex
        display: flex;
        flex-direction: column;

        // x轴方向上居中
        justify-content: center;

        // 若无align-items,每个item会把flex格子占满
        // align-items会让元素在Y轴对齐
        align-items: center;

        // 点击active效果
        &.active{
            color:var(--primary-color)
        }

        img {
            height: 36px;
        }

        .text {
            font-size: 12px;
        }
    }

}
</style>

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

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

相关文章

LVGL学习笔记12 - 复选框CheckBox

目录 1. Parts 1.1 LV_PART_MAIN 1.2 LV_PART_INDICATOR 2. 状态 3. 样式 3.1 设置字符串颜色 3.2 设置点击框外框颜色 3.3 修改点击框弧度 3.4 修改字符串与点击框的间隔 4. 事件 复选框通过lv_checkbox_create创建。一个CheckBox由一个点击框加一个Label组成。 obj1 …

Minikube Mac 安装 使用

Minikube Mac 安装 使用 环境要求 硬件要求 至少 2核 CPUs2GB 以上内存20GB 以上磁盘空间网络环境容器或虚拟机, 例如: Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation 本机环境 Mac Pro 10.13.6 Docker 18.09.1 …

半导体行业相关术语

目录 1.晶圆&#xff08;wafer&#xff09; 2. 自动化测试设备&#xff08;ATE Automatic Test Equipment&#xff09; 3.晶盒&#xff08;Cassette&#xff09; 4. 待测设备(DUT Device Under Test) 5. 探针接口板(PIB Prober Interface Board) 6. 设备接口板(DIB D…

干货 | web自动化总卡在文件上传和弹框处理上?

在有些场景中&#xff0c;需要上传文件&#xff0c;而 Selenium 无法定位到弹出的文件框&#xff0c;以及网页弹出的提醒。这些都是需要特殊的方式来处理。input 标签使用自动化上传&#xff0c;先定位到上传按钮&#xff0c;然后 send_keys 把路径作为值给传进去.如图所示&…

【计算机网络-物理层】通信基础

文章目录1 码元、速率、波特、带宽1.1 码元1.2 波特率1.3 比特率1.4 带宽1.5 相关例题2 奈氏准则、香农定理2.1 奈氏准则&#xff08;采样定理&#xff09;2.2 香农定理2.3 相关例题3 编码方式3.1 归零编码&#xff08;RZ&#xff09;3.2 非归零编码&#xff08;NRZ&#xff09…

【简单DP】[NOIP2007 普及组] 守望者的逃离

P1095 [NOIP2007 普及组] 守望者的逃离 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)题意&#xff1a;思路&#xff1a;独立做出来的一道DP&#xff01;一开始我去模拟过程找子问题&#xff0c;然后去找阶段是什么本来想的是以路程作为阶段&#xff0c;但是1e8数组开不下那么…

如何看待PyTorch 2.0?

作者&#xff5c;吴育昕 1 为什么是TorchDynamo Graph capture 把用户 Python 写的模型代码变成 graph&#xff0c;是一切编译的根基。而 PyTorch 在试了这么多方案之后似乎已经锁定 TorchDynamo 作为 graph capture 的未来方向了&#xff0c;所以写一点关于 TorchDynamo 的…

假如面试官问你Babel的原理该怎么回答

1. 什么是 Babel 简单地说&#xff0c;Babel 能够转译 ECMAScript 2015 的代码&#xff0c;使它在旧的浏览器或者环境中也能够运行。 // es2015 的 const 和 arrow function const add (a, b) > a b;// Babel 转译后 var add function add(a, b) {return a b; };Babel…

pwr | 谁说样本量计算是个老大难问题!?(二)(独立样本均值篇)

1写在前面 上次介绍了两组发生率的样本量计算方法&#xff0c;通过pwr包进行计算非常简单&#xff0c;可以有效地减少我们的工作量。&#x1f618; 有时候我们想比较两组之间的均值&#xff0c;如何计算样本量又一次成了老大难问题。&#x1f912; 本期我们还是基于pwr包&#…

【自学Java】Windows安装PyCharm IDE

Windows安装PyCharm IDE PyCharm下载 PyCharm下载地址 https://www.jetbrains.com/pycharm/PyCharm下载 打开上面的链接&#xff0c;打开 Python 的开发工具 PyCharm 的下载页面&#xff0c;如下图所示&#xff1a; 这里我们点击 Download&#xff0c;跳转到新的页面&#…

错过短视频,微博奔向新浪

以后新浪或许会被叫做“微博新浪”。 2022年12月23日晚&#xff0c;港股微博发布公告称&#xff0c;拟斥资15亿元收购新浪网技术有限公司100%股权。此举被外界解读为微博将反向收购新浪。 曾经&#xff0c;微博还是新浪移动互联网时代的“船票”。随着门户网站逐渐凋零&#…

基于ODX/OTX诊断的整车扫描

| ODX (Open Diagnostic data eXchange) 是基于XML语言、开放的诊断数据格式&#xff0c;用于车辆整个生命周期中诊断数据的交互。它一开始由ASAM提出并形成标准MCD-2D&#xff0c;后来以ODX2.2.0为基础形成了ISO标准——ISO 22901-1。 | OTX (Open Test sequence eXchange) …

Redis主从复制哨兵模式

Redis主从复制&哨兵模式一 什么是Redis主从复制1.1 主从复制的架构1.2 主从复制的原理1.3 主库是否要开启持久化1.4 辅助配置&#xff08;主从数据一致性配置&#xff09;二 主从复制配置2.1 slave 命令2.2 配置文件三 主从复制常见问题四 Redis哨兵机制4.1 什么是哨兵模式…

WebSocket服务端和客户端代码示例

目录一、WebSocket简介二、WebSocket服务端代码示例三、WebSocket客户端代码示例四、运行服务端和客户端&#xff0c;查看输出结果一、WebSocket简介 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工&#xff08;full-duplex&#xff09;通信&#x…

UE4 优化笔记

一、衡量场景性能的指标(这些指标优化前就要先记录下来&#xff0c;这样才知道优化了多少&#xff01;) 1.stat unit&#xff1a;单元的状态。最开始根据这个数据&#xff0c;确定大致的优化方向 Frame&#xff1a;每帧消耗的总时长 Game&#xff1a;游戏线程运行消耗的时间 D…

迭代最近点ICP点云配准

传统ICP存在匹配速度慢&#xff0c;误匹配率高等缺点。 粗配准是在不清楚两个点云的相对位置的情况下&#xff0c;找到这两个点云近似的旋转平移矩阵&#xff0c;主要是为精配准提供初始变换矩阵&#xff1b;精配准在已知旋转平移矩阵的情况下&#xff0c;通过多次迭代优化进一…

Redis超详细版教程通俗易懂

【狂神说Java】Redis最新超详细教程通俗易懂 一、缓存、关系型数据库、非关系型数据库 关系型数据库存放在磁盘上&#xff0c;读取数据需要IO操作&#xff0c;速度非常慢非关系型数据库存放在内存上&#xff0c;读取数据速度非常快两者关系&#xff1a;一般会将数据存储在关系…

BGP在数据中心的应用4——BGP配置再优化

注&#xff1a; 本文根据《BGP in the Datacenter》整理&#xff0c;有兴趣和英文阅读能力的朋友可以直接看原文&#xff1a;https://www.oreilly.com/library/view/bgp-in-the/9781491983416/上一部分笔记请参考&#xff1a;https://blog.csdn.net/tushanpeipei/article/deta…

图论(3)单源最短路拓展

活动 - AcWing acw1137 如果我们确定了起点&#xff0c;那么就是一个模板题 选起点有两个办法&#xff1a;1.选取虚拟原点&#xff0c;连接家附近的所有车站。直接以虚拟原点作为我起点跑最短路即可。2.反向建图&#xff0c;取终点到家附近所有车站的dist&#xff0c;取min即…

JVM垃圾回收器-Serial回收器:串行回收

文章目录学习资料垃圾回收器Serial回收器&#xff1a;串行回收学习资料 【尚硅谷宋红康JVM全套教程&#xff08;详解java虚拟机&#xff09;】 【阿里巴巴Java开发手册】https://www.w3cschool.cn/alibaba_java JDK 8 JVM官方手册 垃圾回收器 Serial回收器&#xff1a;串行回…