鸿蒙-样式服用

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())
相关推荐
颜酱33 分钟前
使用useReducer和Context进行React中的页面内部数据共享
前端·javascript·react.js
Data_Adventure40 分钟前
大屏应用中的动态缩放适配工具
前端
wenke00a1 小时前
C函数实现strcopy strcat strcmp strstr
c语言·前端
AiMuo1 小时前
FLJ性能战争战报:完全抛弃 Next.js 打包链路,战术背断性选择 esbuild 自建 Worker 脚本经验
前端·性能优化
Lefan1 小时前
解决重复请求与取消未响应请求
前端
混水的鱼1 小时前
React + antd 实现文件预览与下载组件(支持图片、PDF、Office)
前端·react.js
程序员嘉逸1 小时前
🎨 CSS属性完全指南:从入门到精通的样式秘籍
前端
Jackson_Mseven1 小时前
🧺 Monorepo 是什么?一锅端的大杂烩式开发幸福生活
前端·javascript·架构
我想说一句1 小时前
JavaScript数组:轻松愉快地玩透它
前端·javascript
binggg1 小时前
AI 编程不靠运气,Kiro Spec 工作流复刻全攻略
前端·claude·cursor