鸿蒙-样式服用

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())
相关推荐
chilavert3183 分钟前
技术演进中的开发沉思-228 Ajax: Aptana开发
前端·javascript·ajax
kwg1269 分钟前
Dify二次开发-AI 应用端反馈指令接收(AI 应用端 → Dify)
前端·数据库·人工智能
哟哟耶耶10 分钟前
knowledge-scss学习
前端·学习·scss
坚定信念,勇往无前11 分钟前
springboot +mongodb游标分页,性能好。前端存储游标历史
前端·spring boot·mongodb
却话巴山夜雨时i13 分钟前
295. 数据流的中位数【困难】
java·服务器·前端
云技纵横15 分钟前
Vue无限滚动实战——从原理到企业级优化方案
前端
细心细心再细心17 分钟前
响应式记录
前端·vue.js
干就完了124 分钟前
关于git的操作命令(一篇盖全),可不用,但不可不知!
前端·javascript
之恒君24 分钟前
JavaScript 垃圾回收机制详解
前端·javascript
是你的小橘呀25 分钟前
像前任一样捉摸不定的异步逻辑,一文让你彻底看透——JS 事件循环
前端·javascript·面试