HarmonyOS 如何实现通用样式?

一、能否像前端添加class一样,一个通用css样式(分全局和组件内两种情况),供多个组件使用,参考:

.normal-font{
  font-size: 16px;
  text-align: center;
  color: #36363A;
  margin: 0 auto 10px;
}

<div class="class1 normal-font">666</div>
  <div class="class2 normal-font">123</div>
  <div class="class3 normal-font">678</div>

二、能否直接把某些样式给到包裹层,比如字体字号颜色之类,目前容器组件是不能添加字体字号样式的,但是容器内的基础组件使用的又是相同的样式,这样代码很冗余以下text组件的样式每次都要写一遍一样的

Row(){
  Row(){
    Text('文案1')
      .fontColor($r('app.color.black_36'))
      .fontSize(15)
    ......//其他组件
  }
  Row(){
    Text('文案2')
      .fontColor($r('app.color.black_36'))
      .fontSize(15)
    ......//其他组件
  }
  Row(){
    Text('文案3')
      .fontColor($r('app.color.black_36'))
      .fontSize(15)
    ......//其他组件
  }

}
.fontSize(15) //报错:Property 'fontColor' does not exist on type 'RowAttribute'. <ArkTSCheck>
阅读 644
1 个回答

一、能否像前端添加class一样,一个通用css样式(分全局和组件内两种情况),供多个组件使用–使用@Styles装饰器可以将多条样式设置提炼成一个方法,直接在组件声明的位置调用。通过@Styles装饰器可以快速定义并复用自定义样式。注意:当前@Styles仅支持通用属性和通用事件。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-style-V5

二、能否直接把某些样式给到包裹层–由于fontSize不是通用样式,所以没法写在容器组件上。当前的方法是在@Styles的基础上,我们提供了@Extend,用于扩展原生组件样式。通过@Extend组合样式,可以使得代码更加简洁,增强可读性。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-extend-V5\#使用场景

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进