[保姆级教程]uniapp自定义标签页切换组件

在这里插入图片描述

文章目录

  • 导文
  • 样式
  • 改成动态列表
  • 切换点击效果
  • 加上点击自动滑动scroll-view
  • 加上切换组件效果


导文

unaipp自带的标签页和ui设计相差太大,直接修改组件比手写一个还麻烦,下面手写一个。

样式

在这里插入图片描述
先用scroll-view做一个滑动,不然多的话滑动不了。

	<scroll-view class="scroll-view_H" scroll-x="true" @scroll="scroll" scroll-left="120"><span class="checkDetails-nav-item action">体重</span><span class="checkDetails-nav-item">餐食</span><span class="checkDetails-nav-item">喝水</span><span class="checkDetails-nav-item">睡眠</span><span class="checkDetails-nav-item">运动</span></scroll-view>

然后实现默认样式,和标签页点击样式。

.scroll-view_H {white-space: nowrap;width: 100%;background: #fff;}.scroll-view-item {height: 300rpx;line-height: 300rpx;text-align: center;font-size: 36rpx;}.scroll-view-item_H {display: inline-block;width: 100%;height: 300rpx;line-height: 300rpx;text-align: center;font-size: 36rpx;}.checkDetails-nav-item {font-size: 16px;font-weight: 500;letter-spacing: 0px;line-height: 30px;color: rgba(75, 89, 105, 1);text-align: left;vertical-align: top;background: #fff;padding: 0px 30px;}.action {font-size: 18px;font-weight: 700;letter-spacing: 0px;line-height: 25.2px;color: rgba(12, 16, 25, 1);position: relative;}.action::after {content: '';position: absolute;background-image: url(../../static/checkDetails/action.png);background-size: 100%;background-repeat: no-repeat;width: 28px;height: 10px;top: 18px;left: 34px;}

改成动态列表

在这里插入图片描述
循环自定义的teb组件就好

		<scroll-view class="scroll-view_H" scroll-x="true" @scroll="scroll" scroll-left="120"><span v-for="(item, index) in navList" :key="index" class="checkDetails-nav-item" :class="{ 'action': navCurrent == item.value }">{{ item.text }}</span></scroll-view>

在data中定义列表,和当前展示的页面值

	data() {return {navCurrent: 'weight',navList: [{text: '体重',value: 'weight'}, {text: '餐食',value: 'food'}, {text: '喝水',value: 'drink'}, {text: '睡眠',value: 'sleep'}, {text: '运动',value: 'sport'}],}},

加上切换页面效果。

切换点击效果

在这里插入图片描述
加上一个handleSwitch点击事件

<span v-for="(item, index) in navList" :key="index" class="checkDetails-nav-item":class="{ 'action': navCurrent == item.value }" ="handleSwitch(item)">{{ item.text }}</span>

切换navCurrent 值就好

handleSwitch(item){this.navCurrent = item.value}

加上点击自动滑动scroll-view

先把scroll-left改成动态的,在handleSwitch方法中添加index索引值传过去

<scroll-view class="scroll-view_H" scroll-x="true" :scroll-left="scrollValue"><span v-for="(item, index) in navList" :key="index" class="checkDetails-nav-item":class="{ 'action': navCurrent == item.value }" @click="handleSwitch(item, index)">{{ item.text }}</span></scroll-view>

使用index索引值,判断滑动位置

handleSwitch(item,index) {this.navCurrent = item.valuethis.scrollValue = index * 100}

加上切换组件效果

在这里插入图片描述
在这里插入图片描述
先创建好组件,一般放在components里面
在这里插入图片描述
在父页面中引入组件,在template里面写组件

	<view class="checkDetails"><view class="checkDetails-nav"><scroll-view class="scroll-view_H" scroll-x="true" :scroll-left="scrollValue"><span v-for="(item, index) in navList" :key="index" class="checkDetails-nav-item":class="{ 'action': navCurrent == item.value }" @click="handleSwitch(item, index)">{{ item.text }}</span></scroll-view></view><drinkPage v-if="navCurrent == 'drink'"></drinkPage><foodPage v-if="navCurrent == 'food'"></foodPage><sleepPage v-if="navCurrent == 'sleep'"></sleepPage><sportPage v-if="navCurrent == 'sport'"></sportPage><weightPage v-if="navCurrent == 'weight'"></weightPage></view>
</template><script>

别忘了用import 引入和components注册组件名哦

import drinkPage from './components/drinkPage/index.vue'
import foodPage from './components/foodPage/index.vue'
import sleepPage from './components/sleepPage/index.vue'
import sportPage from './components/sportPage/index.vue'
import weightPage from './components/weightPage/index.vue'export default {components: {drinkPage,foodPage,sleepPage,sportPage,weightPage},

您好,我是肥晨。
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

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

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

相关文章

神经网络学习8-反向传播

back propagation 拿到前面传回来的L对z的偏导&#xff0c;再分别算损失值对x和w的偏导 反向传播 前馈过程求局部梯度 反向传播 这里的loss&#xff08;wxb-y)^2,第一个关于b的偏导为2(wxb-y),第二个关于w的为2w(wxb-y)

【机器学习300问】128、简述什么Word2Vec?

一、一句话说明Word2Vec是什么&#xff1f; Word2Vec是一种常见的词嵌入技术。Word2Vec的目标是将每个词表示为一个向量&#xff0c;使得这些向量能够反映出词语之间的相似性和关联性。 word2vec算法通过预测中心词和上下文词的共现概率来学习词向量&#xff0c;能够捕捉词语之…

SQLite 可以随可执行文件部署在用户机器吗

答案是&#xff1a;可以的。 sqlite 本身就是嵌入式的SQL数据库引擎&#xff0c;不需要单独的服务器进程。sqlite 直接读取和写入普通磁盘文件&#xff0c;sqlite 的整个数据库&#xff08;所有表、索引、触发器等&#xff09;都包含在单个磁盘文件中。所以 sqlite 很适合开发…

JAVA ZGC相关GC日志详情分析

可以通过设置 -Xlog:gc*:gc.log 选项以开启 ZGC 日志。其中 "gc*" 意为打印所有 tag 中以 "gc" 开头的日志&#xff0c;"gc.log" 为日志存储路径。 下面以 AutoMQ 在实际运行时的一次 GC 为例&#xff0c;按照不同的 log tag&#xff0c;解释 Z…

植物大战僵尸杂交版v2.1最新直装版,苹果+安卓+PC+防闪退工具+修改工具+高清工具+通关存档整合包更新

今天我要和各位聊聊一款让全网疯狂的游戏——《植物大战僵尸杂交版》。这可不是简单的游戏&#xff0c;它可是让B站的UP主“潜艇伟伟迷”一夜成名的大作&#xff0c;让无数玩家为之疯狂的魔改神作&#xff01; 记得2009年&#xff0c;《植物大战僵尸》横空出世&#xff0c;那时…

LDO芯片手册,实例应用分析

在进行电路设计时LDO是经常用到的&#xff0c;尤其在为芯片&#xff0c;晶振等敏感电路进行供电时应用更多&#xff0c;下面选取一款比较常用的LDO芯片&#xff0c;一起进行更深入的学习。 SGM2036特点简介 SGM2036&#xff0c;圣邦微一款比较常用的LDO芯片手册 可以先大致看…

【ajax实战04】数据管理平台——富文本编辑器

一&#xff1a;富文本编辑器简介 富文本&#xff1a;带样式&#xff0c;多格式的文本&#xff0c;在前端一般使用标签配合内联样式实现。 富文本编辑器&#xff1a;用于编写富文本内容的容器 二&#xff1a;wangEditor插件 https://www.wangeditor.com/ 对于将富文本编辑器…

MySQL 连接的使用方法与技巧

MySQL 连接是使用 MySQL 数据库的关键步骤之一。它允许用户通过网络与 MySQL 服务器建立通信&#xff0c;并执行各种数据库操作&#xff0c;如查询、插入、更新和删除数据。在本文中&#xff0c;我们将深入探讨 MySQL 连接的使用&#xff0c;包括连接的建立、配置和常见问题的解…

CAN通信协议

文章目录 STM32-CAN1. CAN基础知识2. CAN协议2.1. CAN协议与ISO/OSI基本参照模型的关系2.2. CAN协议及标准规格2.3. CAN协议2.3.1. 帧的种类2.3.2. 数据帧2.3.3. 遥控帧2.3.4. 错误帧2.3.5. 过载帧2.3.6. 间隔帧 2.4. 优先级的决定2.5. 位填充2.6. 错误的种类2.7. 位时序 3. CA…

鸿蒙系统最简单安装谷歌服务及软件的方法

哈喽&#xff0c;各位小伙伴们好&#xff0c;我是给大家带来各类黑科技与前沿资讯的小武。 近日&#xff0c;华为开发者大会在东莞松山湖召开&#xff0c;发布了盘古大模型5.0和纯血版的鸿蒙 HarmonyOS NEXT 全场景智能操作系统&#xff0c;而根据研究机构 Counterpoint Resea…

【linux/shell案例实战】awk实现浮点数四舍五入

使用printf格式化输出&#xff0c;实现保留小数位数四舍五入的功能 awk {printf "%.2f",$0}

ITSG、COST-G、Tongji和WHU Level-2数据产品读取绘图(Matlab)

数据介绍&#xff1a; ICGEM International Center for Global Gravity Field Models (gfz-potsdam.de) ITSG 2018&#xff1a;Institute of Geodesy at Graz University of Technolog&#xff08;格拉茨理工大学大地测量研究所&#xff09; 2018版本&#xff0c;最高60阶球谐…

Java导出excel合并行功能

导出的excel需要上下行相同的数据进行行合并的功能。如图显示 这里我使用的是项目框架自带的导出模板代码&#xff0c;是在这套模板基础之上做的修改。 // 我主要演示的就是mergeRows方法的操作&#xff0c;dataList是导出数据的集合。 workbook ExcelTools.expData(workbook…

【Linux】性能分析器 perf 详解(二)

上一篇:【Linux】性能分析器 perf 详解(一) 1、perf命令列表 annotate 读取perf.data(由perf record生成)并结合源代码展示详细的性能分析结果,包括CPU执行热点、函数调用栈等信息。archive 使用perf.data文件中找到的带构建标识符的对象文件创建归档文件,便于后续对这…

大厂面试官问我:Redis中热key和大key是怎么解决的?【后端八股文五:Redis热key和大key八股文合集】

往期内容&#xff1a; 大厂面试官问我&#xff1a;Redis处理点赞&#xff0c;如果瞬时涌入大量用户点赞&#xff08;千万级&#xff09;&#xff0c;应当如何进行处理&#xff1f;【后端八股文一&#xff1a;Redis点赞八股文合集】-CSDN博客 大厂面试官问我&#xff1a;布隆过滤…

【OceanBase诊断调优】—— 如何缩短OceanBase 数据库执行 count(*) 的时间

本文介绍影响 OceanBase 数据库执行 count(*) 时间的因素以及缩短 count(*) 执行时间的方法。 适用版本 OceanBase 数据库所有版本 执行 count(*) 的时间 OceanBase 数据库中&#xff0c;执行 count(*) 的时间不仅与选择的行数&#xff0c;还与行的长度相关。这是由于对主表…

振兴黄河新生力 打造文旅新地标——全国首家黄河会客厅在山东济南启幕

6月26日&#xff0c;由黄河文化发展工作站组织实施的全国首家黄河会客厅平台发布会暨山东基地启动仪式在济南成功召开。黄河会客厅以“民生黄河、生态动能、中华文明”为核心主题&#xff0c;融汇黄河智库、黄河文明、黄河产域、黄河金融、黄河科创、黄河物贸六大振兴赋能体系&…

计算机视觉:项目实战

目录 SSD1.安装ananconda2.安装cuda和cudnn3.配置Pytorch环境3.1 pytorch环境的配置与激活3.2 pytorch库的安装3.3 其它依赖库的安装 遇到的问题&#xff1a;1.EOFError: Ran out of input.2.No module named dlib. SSD 1.安装ananconda 见另一篇博文&#xff1a;https://blo…

【LeetCode】每日一题:LRU缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -1 …

maven-jar-plugin在springboot中打包成普通引用的jar

如果您想要创建一个不包含Spring Boot特定结构的普通jar包&#xff08;例如&#xff0c;一个可以被其他项目作为依赖引用的库&#xff09;&#xff0c;您需要在pom.xml中添加maven-jar-plugin的配置。这里是一个示例配置&#xff0c;它将创建一个带有lib分类器的jar包&#xff…