HarmonyOS7自定义样式跑马灯实战:Marquee 样式定制与视觉层次设计
文章目录前言先把这页在干什么看明白状态字段不多但分工要清楚哪几个函数最值得先看第一段关键代码页面是怎么被带起来的第二段关键代码真正决定交互手感的地方把页面跑起来之后建议你这样操作一遍如果我把它迁进正式项目这个案例为什么值得留一份完整代码收个尾前言跑马灯这个组件很多人第一反应就是“让文字滚起来”。但真正放进业务里决定页面质感的往往不是滚动本身而是字体、背景、边框和间距这些视觉细节。这个案例适合拿来练一遍 Marquee 的样式定制能力。 我自己看这类案例时通常不会先背属性而是先判断它到底在解决什么页面问题。这个习惯很有用因为一旦知道“它是给谁用、解决什么场景”后面的代码就不容易看散。别看这个案例篇幅不算长但它很适合拿来练“页面目标和代码结构怎么对齐”这件事。你后面不管是复刻还是准备拆成自己的业务组件都会更顺。这类写法尤其适合落在 公告条、活动横幅、品牌信息提示、内容运营位 这些场景里所以我下面不会只讲“组件怎么写”而是更关心“放进页面之后为什么这样组织”。先把这页在干什么看明白我建议先不要着急顺着源码往下滚。先回答一个更实际的问题自定义样式跑马灯 这个页面用户一进来第一眼会看到什么接着又会去操作哪里。结构感一旦建立起来后面的代码就不容易看散。页面区域主要职责在代码里的典型表现头部说明区交代当前案例在演示什么Text标题、补充说明、标签文案核心展示区承载组件能力的主要效果Column、Row、业务组件本体辅助信息区补充状态、标签、分组或统计信息次级文本、角标、分组标题、描述块交互入口区负责切换、返回、定位、选择等动作点击事件、按钮、索引条、导航入口这一页没有额外拆出接口页面更多是直接围绕基础数据和组件参数展开。这篇我会按“先看到什么、再点什么、最后哪里变化”的顺序去讲适合第一次复刻这个案例时照着走。状态字段不多但分工要清楚这一页虽然只有一个isShow但不代表它没有结构可讲。样式定制类页面经常是这样显式状态很少真正的差异主要藏在配置组合里。也就是说这篇更适合拿来训练你对“视觉参数分层”的敏感度。isShow在这里只负责页面显隐本身不是重点。真正的“隐性状态”其实是每一种跑马灯样式背后那套视觉配置字号、字重、背景色、圆角、边框、阴影、内边距以及滚动速度本身。如果把这些配置当成一组可管理的样式状态这页就会一下子变得更像真实业务代码大字主题色那组更像强提醒公告。描边样式更适合轻量信息条或品牌说明。暗色和渐变方案更接近活动位、专题位这类有氛围要求的区域。所以这篇最值得你学的不只是“怎么把样式写出来”而是“怎么让不同视觉语气服务不同信息层级”。这一步想通了后面你做运营条、通知条、品牌横幅时就不会只剩下换颜色这一个动作。哪几个函数最值得先看读函数别贪多。对 自定义样式跑马灯 这种页面来说真正有阅读价值的往往是那几段会改状态、触发交互或者推动页面切换的逻辑。这个案例没有太多额外方法核心价值主要集中在页面结构和组件组合方式。我自己读这类方法时通常只抓一条线谁触发、谁被改、页面哪里立刻有反馈。把这三件事连起来很多交互代码一下就顺了。第一段关键代码页面是怎么被带起来的这一段建议慢一点看。它通常决定了页面初始状态也决定了后续哪些区域会跟着刷新。StateisShow:booleantruebuild(){Column(){if(this.isShow){Column({space:16}){Text(自定义样式跑马灯).fontSize(20).fontWeight(FontWeight.Bold).fontColor(DEMO_THEME_COLOR)Text(通过属性设置自定义跑马灯的颜色、字号和背景).fontSize(13).fontColor(DEMO_SUBTEXT_COLOR).width(100%)Column({space:14}){// 样式1大字主题色Column({space:6}){Text(样式一大字主题色).fontSize(12).fontColor(DEMO_SUBTEXT_COLOR)Marquee({start:true,这一段我通常不会一下翻过去而是先确认下面这几个判断点State字段到底在控制显示、选择、跳转结果还是模式切换。默认值是不是合理页面一打开会不会就落在一个可理解的状态上。字段命名能不能让后来的人一眼看懂用途而不是还要翻半天 UI。第二段关键代码真正决定交互手感的地方样式定制页最容易被误读成“只是把几组参数平铺出来”。其实真正决定观感差异的不是某一个单独属性而是这些属性有没有一起朝同一个视觉目标服务。这段结构就是在做这件事。/** * 自定义样式跑马灯 */import{PRESET_COLORS,generateListItems,DEMO_BG_COLOR,DEMO_CARD_COLOR,DEMO_THEME_COLOR,DEMO_SUBTEXT_COLOR}from./typesEntryComponentstruct MarqueeCustomStyleShowcase{StateisShow:booleantruebuild(){Column(){if(this.isShow){Column({space:16}){Text(自定义样式跑马灯).fontSize(20).fontWeight(FontWeight.Bold).fontColor(DEMO_THEME_COLOR)Text(通过属性设置自定义跑马灯的颜色、字号和背景).fontSize(13).fontColor(DEMO_SUBTEXT_COLOR).width(100%)你可以把这里的阅读重点放在“样式组合”而不是“单个属性”上信息层级怎么建立字号、字重和颜色先决定这是主标题感、说明感还是弱提示感。容器气质怎么塑造背景、圆角、边框和阴影一起决定它更像公告条、活动横幅还是品牌提示条。滚动节奏怎么配合视觉速度快慢不是独立参数它会影响页面整体语气。醒目的红底快滚和浅色慢滚传达出来的情绪完全不一样。很多项目里跑马灯之所以显得廉价不是因为组件不够强而是样式参数各管各的没有形成一套一致语气。把这段理解透你就会知道为什么同样是滚动文本有的像系统通知有的像活动 banner还有的像品牌口号位。把页面跑起来之后建议你这样操作一遍文章讲再多都不如自己把页面点一遍。尤其是 自定义样式跑马灯 这种带明显交互结果的页面只看代码很难建立手感。先进入页面确认首屏是不是把自定义样式跑马灯的主题交代清楚。盯住核心展示区观察默认状态下最醒目的内容是什么。主动触发一次关键交互比如点击、滑动、跳转、返回、切换或者选择。回头检查状态区、提示区、标题区或者附属信息有没有跟着变化。最后再打开源码对照刚才那次交互把状态变化链路串起来。如果这五步你能边操作边说清楚页面发生了什么后面再换成自己的数据和交互心里会稳很多。如果我把它迁进正式项目示例页最大的风险就是你觉得“这不难”结果真要迁进项目里发现数据、样式、交互边界全要补。这里提前把这些坑说开。公告条类页面别只盯滚动字号、留白、边框和底色往往更影响可读性。如果后面要接运营文案最好把内容源和样式配置拆开避免每次改文案都动布局代码。只要页面里有重复块就别硬撑着手写到底早点抽成小组件后面改样式和改交互都会轻松很多。示例数据最好和布局代码分开放不然后面一接接口页面文件很容易立刻变臃肿。这个案例为什么值得留一份它真正值得保留的地方不只是效果能跑出来而是写法相对克制。你以后回来翻会发现它很适合当中间层模板。页面结构比较稳后续不管是换数据还是换皮肤成本都不会特别高。状态数量总体可控适合拿来练“一个页面里如何分配职责”这件事。组件参数和页面目标之间关系比较直观不太会出现“能跑但看不懂为什么这么配”的情况。完整代码下面保留整理过命名的完整 ArkTS 代码方便你直接对照学习。这里已经去掉原始的 Demo 命名改成了更贴近当前案例语义的名称。/** * 自定义样式跑马灯 */import{PRESET_COLORS,generateListItems,DEMO_BG_COLOR,DEMO_CARD_COLOR,DEMO_THEME_COLOR,DEMO_SUBTEXT_COLOR}from./typesEntryComponentstruct MarqueeCustomStyleShowcase{StateisShow:booleantruebuild(){Column(){if(this.isShow){Column({space:16}){Text(自定义样式跑马灯).fontSize(20).fontWeight(FontWeight.Bold).fontColor(DEMO_THEME_COLOR)Text(通过属性设置自定义跑马灯的颜色、字号和背景).fontSize(13).fontColor(DEMO_SUBTEXT_COLOR).width(100%)Column({space:14}){// 样式1大字主题色Column({space:6}){Text(样式一大字主题色).fontSize(12).fontColor(DEMO_SUBTEXT_COLOR)Marquee({start:true,step:4,loop:-1,fromStart:true,src:大号字体 主题色背景 白色文字}).width(100%).height(48).fontSize(20).fontWeight(FontWeight.Bold).fontColor(#FFFFFF).backgroundColor(DEMO_THEME_COLOR).borderRadius(24).padding({left:20})}.width(100%)// 样式2描边风格Column({space:6}){Text(样式二描边风格).fontSize(12).fontColor(DEMO_SUBTEXT_COLOR)Marquee({start:true,step:5,loop:-1,fromStart:true,src:无边背景 主题色描边 深色文字}).width(100%).height(40).fontSize(15).fontColor(DEMO_THEME_COLOR).backgroundColor(#FFFFFF).border({width:2,color:DEMO_THEME_COLOR,radius:20})}.width(100%)// 样式3渐变效果用纯色模拟Column({space:6}){Text(样式三渐变色背景).fontSize(12).fontColor(DEMO_SUBTEXT_COLOR)Marquee({start:true,step:3,loop:-1,fromStart:true,src:精致浅色背景 深色字体 圆角胶囊}).width(100%).height(40).fontSize(14).fontColor(#333333).backgroundColor(#E8EAF6).borderRadius(20).shadow({radius:8,color:#C5CAE9,offsetY:2})}.width(100%)// 样式4暗色风格Column({space:6}){Text(样式四暗色风格).fontSize(12).fontColor(DEMO_SUBTEXT_COLOR)Marquee({start:true,step:4,loop:-1,fromStart:true,src:深色背景 亮色文字 现代风格}).width(100%).height(40).fontSize(14).fontColor(#00E5FF).backgroundColor(#263238).borderRadius(20)}.width(100%)// 样式5品牌色Column({space:6}){Text(样式五多彩品牌色).fontSize(12).fontColor(DEMO_SUBTEXT_COLOR)Marquee({start:true,step:6,loop:-1,fromStart:true,src:红色醒目背景 白色粗体 快速滚动}).width(100%).height(40).fontSize(16).fontWeight(FontWeight.Bold).fontColor(#FFFFFF).backgroundColor(#E53935).borderRadius(20)}.width(100%)}.width(100%).padding(16).backgroundColor(DEMO_CARD_COLOR).borderRadius(12)}.alignItems(HorizontalAlign.Start)}Text(自定义样式跑马灯 - 自定义样式跑马灯).fontSize(12).fontColor(#999999).margin({top:12})}.width(100%).height(100%).backgroundColor(DEMO_BG_COLOR).padding(16)}}收个尾自定义样式跑马灯 这一页我建议你至少亲手改一次。哪怕只是换一组数据、调一个布局、补一个状态字段你都会比只看文章更快进入自己的节奏。

相关新闻

AI 辅助 DApp 负载测试设计:用户行为建模、流量回放与链上压力场景生成

AI 辅助 DApp 负载测试设计:用户行为建模、流量回放与链上压力场景生成

AI 辅助 DApp 负载测试设计:用户行为建模、流量回放与链上压力场景生成 一、DApp 负载测试的独特挑战 传统 Web 应用的负载测试已经标准化——JMeter/K6 录制用户旅程、逐步加压、观察 CPU/内存/Database 连接池的响应曲线。但 DApp 的负载测试面临三个独特的复杂维…

2026/7/25 5:22:46 阅读更多 →
Diplomat:革命性Rust FFI工具,轻松生成多语言绑定的完整指南

Diplomat:革命性Rust FFI工具,轻松生成多语言绑定的完整指南

Diplomat:革命性Rust FFI工具,轻松生成多语言绑定的完整指南 【免费下载链接】diplomat Rust tool for generating FFI definitions allowing many other languages to call Rust code 项目地址: https://gitcode.com/gh_mirrors/dipl/diplomat D…

2026/7/21 8:39:24 阅读更多 →
Solana 程序性能优化清单:Compute Unit 审计、账户预取与指令级微优化的系统方法

Solana 程序性能优化清单:Compute Unit 审计、账户预取与指令级微优化的系统方法

Solana 程序性能优化清单:Compute Unit 审计、账户预取与指令级微优化的系统方法 一、Solana 的性能账本:CU 才是硬通货 Solana 的高吞吐能力(理论 65k TPS)常常给人一种错觉:在上面写什么程序都能跑得快。实际上&…

2026/7/25 13:46:05 阅读更多 →

最新新闻

Context Vault:开源CLI工具解决AI编程助手上下文管理痛点

Context Vault:开源CLI工具解决AI编程助手上下文管理痛点

如果你正在使用 Claude Code 进行编程协作,可能会遇到一个典型问题:每次开启新会话时,都需要重新解释项目背景、技术栈偏好和个人编码习惯。这种重复劳动不仅浪费时间,更关键的是,上下文信息的丢失直接影响 AI 助手生成…

2026/7/26 15:53:18 阅读更多 →
XCOM 2模组管理终极指南:Alternative Mod Launcher完全使用教程

XCOM 2模组管理终极指南:Alternative Mod Launcher完全使用教程

XCOM 2模组管理终极指南:Alternative Mod Launcher完全使用教程 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_…

2026/7/26 15:53:18 阅读更多 →
Obsidian插件汉化终极指南:三分钟实现全中文界面体验

Obsidian插件汉化终极指南:三分钟实现全中文界面体验

Obsidian插件汉化终极指南:三分钟实现全中文界面体验 【免费下载链接】obsidian-i18n 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-i18n 你是否曾经因为看不懂英文插件而放弃使用某个功能强大的Obsidian插件?是否花费大量时间查字典只…

2026/7/26 15:53:18 阅读更多 →
Unlock Music:浏览器端音乐解密工具的完整使用指南

Unlock Music:浏览器端音乐解密工具的完整使用指南

Unlock Music:浏览器端音乐解密工具的完整使用指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://…

2026/7/26 15:53:18 阅读更多 →
NomNom:重新定义《无人深空》游戏体验的终极存档编辑器

NomNom:重新定义《无人深空》游戏体验的终极存档编辑器

NomNom:重新定义《无人深空》游戏体验的终极存档编辑器 【免费下载链接】NomNom NomNom is the most complete savegame editor for NMS but also shows additional information around the data youre about to change. You can also easily look up each item ind…

2026/7/26 15:53:18 阅读更多 →
为什么选择CFR:3步掌握Java字节码反编译的终极指南

为什么选择CFR:3步掌握Java字节码反编译的终极指南

为什么选择CFR:3步掌握Java字节码反编译的终极指南 【免费下载链接】cfr This is the public repository for the CFR Java decompiler 项目地址: https://gitcode.com/gh_mirrors/cf/cfr CFR是一款功能强大的Java字节码反编译工具,能够将编译后的…

2026/7/26 15:52:18 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻