【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(四) -> 常见组件(二) -> tabs

embedded/2025/2/22 17:55:45/

目录

1 -> 创建Tabs

2 -> 设置Tabs方向

3 -> 设置样式

4 -> 显示页签索引

5 -> 场景示例


1 -> 创建Tabs

在pages/index目录下的hml文件中创建一个Tabs组件。

<!-- index.hml -->
<div class="container" ><tabs> <tab-bar><text>item1</text><text>item2</text></tab-bar><tab-content class="tabContent"><div class="text"><text>content1</text></div><div class="text"><text>content2</text></div></tab-content></tabs>
</div>
/* test.css */
.container {flex-direction: column;justify-content: center;align-items: center;background-color: #F1F3F5;
}
.tabContent{width: 100%;height: 100%;
}
.text{width: 100%;height: 100%;justify-content: center;align-items: center;
}

2 -> 设置Tabs方向

Tabs默认展示索引为index的标签及内容。通过设置vertical属性使组件纵向展示。

<!-- index.hml -->
<div class="container" style="background-color:#F1F3F5;"><tabs index="1"  vertical="true"><tab-bar ><text>item1</text><text style="margin-top: 50px;">item2</text></tab-bar><tab-content><div><image src="common/images/bg-tv.jpg" style="object-fit: contain;"> </image></div><div><image src="common/images/img1.jpg" style="object-fit: contain;"> </image></div></tab-content></tabs>
</div>

设置mode属性使tab-bar的子组件均分,设置scrollable属性使tab-content不可进行左右滑动切换内容。

<!-- index.hml -->
<div class="container" style="background-color:#F1F3F5;"><tabs style="margin-top: 30px;"><tab-bar mode="fixed"><text>item1</text><text>item2</text></tab-bar><tab-content scrollable="false"><div><image src="common/images/bg-tv.jpg" style="object-fit: contain;"> </image></div><div><image src="common/images/img2.jpg" style="object-fit: contain;"> </image></div></tab-content></tabs>
</div>

3 -> 设置样式

设置Tabs背景色及边框和tab-content布局。

<!-- index.hml -->
<div class="container"><tabs class="tabs"><tab-bar class="tabBar"><text class="tabBarItem">item1</text><text class="tabBarItem">item2</text></tab-bar><tab-content class="tabContent"><div class="tabContent"><text>content1</text></div><div class="tabContent" ><text>content2</text></div></tab-content></tabs>
</div>
/* test.css */
.container {flex-direction: column;justify-content: flex-start;align-items: center;background-color:#F1F3F5;
}
.tabs{margin-top: 20px;border: 1px solid #2262ef;width: 99%;padding: 10px;
}
.tabBar{width: 100%;border: 1px solid #78abec;
}
.tabContent{width: 100%;margin-top: 10px;height: 300px;color: blue;   justify-content: center;  align-items: center;
}

4 -> 显示页签索引

可以为Tabs添加change事件,实现页签切换后显示当前页签索引的功能。

<!-- index.hml -->
<div class="container" style="background-color:#F1F3F5;"><tabs class="tabs" onchange="tabChange"><tab-bar class="tabBar"><text class="tabBarItem">item1</text><text class="tabBarItem">item2</text></tab-bar><tab-content class="tabContent"><div><image src="common/images/bg-tv.jpg" style="object-fit: contain;"> </image></div><div><image src="common/images/img1.jpg" style="object-fit: contain;"> </image></div></tab-content></tabs>
</div>
javascript">/* index.js */
import prompt from '@system.prompt';
export default {tabChange(e){prompt.showToast({message: "Tab index: " + e.index})}
}

说明

tabs子组件仅支持一个<tab-bar>和一个<tab-content>。

5 -> 场景示例

在本场景中,可以点击标签切换内容,选中后标签文字颜色变红,并显示下划线。

用tabs、tab-bar和tab-content实现点击切换功能,再定义数组,设置属性。使用change事件改变数组内的属性值实现变色及下划线的显示。

<!-- index.hml -->
<div class="container"><tabs onchange="changeTabactive"><tab-content><div class="item-container" for="datas.list"><div if="{{$item.title=='List1'?true:false}}"><image src="common/images/bg-tv.jpg" style="object-fit: contain;"> </image></div><div if="{{$item.title=='List2'?true:false}}"><image src="common/images/img1.jpg" style="object-fit: none;"> </image></div><div if="{{$item.title=='List3'?true:false}}"><image src="common/images/img2.jpg" style="object-fit: contain;"> </image></div></div></tab-content><tab-bar class="tab_bar mytabs" mode="scrollable"><div class="tab_item" for="datas.list"><text style="color: {{$item.color}};">{{$item.title}}</text><div class="underline-show" if="{{$item.show}}"></div><div class="underline-hide" if="{{!$item.show}}"></div></div></tab-bar></tabs>
</div>
/* test.css */
.container{
width: 100%;
height: 100%;
background-color:#F1F3F5;
}
.tab_bar {width: 100%;height: 150px;
}
.tab_item {height: 30%;flex-direction: column;align-items: center;
}
.tab_item text {font-size: 32px;
}
.item-container {justify-content: center;flex-direction: column;
}
.underline-show {height: 2px;width: 160px;background-color: #FF4500;margin-top: 7.5px;
}
.underline-hide {height: 2px;margin-top: 7.5px;width: 160px;
}
javascript">/* index.js */
import prompt from '@system.prompt';
export default {data() {return {datas: {color_normal: '#878787',color_active: '#ff4500',show: true,list: [{i: 0,color: '#ff4500',show: true,title: 'List1'}, {i: 1,color: '#878787',show: false,title: 'List2'}, {i: 2,color: '#878787',show: false,title: 'List3'}]}}},changeTabactive (e) {for (let i = 0; i < this.datas.list.length; i++) {let element = this.datas.list[i];element.show = false;element.color = this.datas.color_normal;if (i === e.index) {element.show = true;element.color = this.datas.color_active;}}}
}

感谢各位大佬支持!!!

互三啦!!!


http://www.ppmy.cn/embedded/164401.html

相关文章

深入理解Zookeeper:分布式系统的协调者

引言 在现代分布式系统中&#xff0c;协调和管理多个节点之间的状态和行为是一个复杂且关键的任务。Zookeeper作为一个分布式协调服务&#xff0c;为开发者提供了一种高效、可靠的方式来处理分布式系统中的一致性问题。本文将介绍Zookeeper的基本概念、使用场景以及如何通过示…

Git是什么

简单介绍&#xff1a; Git是一个分布式版本控制系统&#xff0c;用于跟踪文件的更改&#xff0c;特别是在多人协作开发的环境中。 Key: 分布式 版本控制 系统 最常用于软件开发&#xff0c;但也可以用于管理任何类型的文件和文件夹。 Git帮助团队跟踪和管理文件的历史版本&a…

前端(AJAX)学习笔记(CLASS 2):图书管理案例以及图片上传

* BootStrap弹框 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作 步骤&#xff1a; 1、引入bootstrap.css和bootstrap.js 2、准备弹框标签&#xff0c;确认结构 3、通过自定义属性&#xff0c;控制弹框的显示和隐藏 其中的bootstrap.css…

MAC快速本地部署Deepseek (win也可以)

MAC快速本地部署Deepseek (win也可以) 下载安装ollama 地址: https://ollama.com/ Ollama 是一个开源的大型语言模型&#xff08;LLM&#xff09;本地运行框架&#xff0c;旨在简化大模型的部署和管理流程&#xff0c;使开发者、研究人员及爱好者能够高效地在本地环境中实验和…

ML.NET库学习009:花卉图像分类模型

文章目录 ML.NET库学习009&#xff1a;花卉图像分类模型进行图像分类训练的实现功能分析代码结构核心组件示例输出代码实现详细步骤说明注意事项 进行图像分类预测的实现主要目的原理概述实现的主要功能主要流程步骤使用的主要函数和方法关键技术功能详细解读&#xff08;1&…

【Rust中级教程】1.15. Trait bounds(Trait 约束)的编译与分派

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 1.15.1. 静态分发(static dispatch) 编译泛型代码或者调用dyn Trait(详见【Rust自学】17.2…

Unity摄像机与灯光相关知识

一、Inspector窗口 Inspector窗口可以查看和编辑对象的属性以及设置 其中包含各种组件&#xff0c;例如用Cube对象来举例 1.Sphere(Mesh)组件&#xff1a; 用来决定对象的网格属性&#xff0c;例如球体网格为Sphere、立方体网格为Cube 2.Mesh Renderer组件&#xff1a; 用来设置…

8.python文件

文章目录 1.**文件**1.1**文件是什么**1.2**文件路径**1.3**文件操作**1.3.1**打开文件**1.3.2**关闭文件**1.3.3**写文件**1.3.4**读文件** 1.4**关于中文的处理**1.5**使用上下文管理器** 大家好&#xff0c;我是晓星航。今天为大家带来的是 python文件 相关的讲解&#xff0…