鸿蒙-样式服用

1. 使用 @Styles 装饰器(适用于简单样式复用)-

仅限当前组件或页面内复用,无法跨文件使用

less 复制代码
@Styles function TxtStyle() {
  .width(px2vp(300))
  .height(px2vp(100))
  .backgroundColor(Color.Blue)
  .margin({ top: px2vp(100) })
  .border({ width: px2vp(2), color: Color.Blue, radius: px2vp(50) })
}

使用 AttributeModifier(适用于全局样式和动态样式)

AttributeModifier 是更强大的样式管理方式,支持跨组件、跨页面复用,并能针对不同状态(如按下、禁用)设置样式。

  • 支持全局导出,可在多个页面复用
  • 可针对不同交互状态(如按下、聚焦)定义不同样式
  • 适用于复杂组件(如 ButtonText)的样式统一管理
less 复制代码
// 定义全局样式类
export class CommonTextModifier implements AttributeModifier<TextModifier> {
  applyNormalAttribute(instance: TextModifier): void {
    instance
      .fontSize(px2fp(50))
      .fontColor(Color.White)
      .backgroundColor(Color.Blue)
      .margin({ top: px2vp(100) });
  }
}

// 使用
Text("测试文字").attributeModifier(new CommonTextModifier())

使用 @Extend 扩展原生组件样式

  • 适用于需要继承或覆盖原生组件样式的场景2。
  • @Styles 更灵活,支持跨文件复用。
scss 复制代码
// 定义扩展样式
export class Text18fp3F8CFF implements AttributeModifier<TextAttribute> {
  applyNormalAttribute(instance: TextAttribute): void {
    instance
      .fontColor(Color.Blue)
      .fontSize(R.float.fp18)
      .fontWeight(FontWeight.Medium);
  }
}

// 使用
Text("测试文字").attributeModifier(new Text18fp3F8CFF())
相关推荐
lichenyang45310 小时前
Docker 学习笔记(一):为什么需要镜像、容器和仓库?
前端
kyriewen10 小时前
别再对着 TypeScript 报错发呆了:我把 10 个最常见的红色波浪线翻译成了人话
前端·javascript·typescript
IT_陈寒10 小时前
SpringBoot自动配置的坑,我的API突然就404了
前端·人工智能·后端
奇奇怪怪的11 小时前
Embedding 模型 10+ 横向评测
前端
陈广亮11 小时前
Monorepo 从 0 到 1 实操指南 2026 版:pnpm catalogs + Turborepo 2.x + changesets 全链路
前端
子兮曰11 小时前
OpenMontage 深度解剖:你的 AI 编程助手,其实是个视频工作室
前端·后端·ai编程
敲代码的鱼11 小时前
PDF 预览与签名批注写回 支持安卓 iOS 鸿蒙 UTS插件
android·前端·ios
子兮曰11 小时前
前端工具链的「Rust 化」:一场没有赢家的军备竞赛?
前端·后端·rust
Hyyy12 小时前
Function Calling / Tool Use的原理和实现模式
前端·llm·ai编程