HarmonyOS NEXT学习——@Styles、@Extend、stateStyles
创始人
2024-12-26 22:09:01
0

@Styles装饰器 定义组件重用样式

  • 仅支持通用属性和通用事件
  • 不支持参数
  • 可以定义全局和组件内使用,全局使用需要加function
// 全局 @Styles function functionName() { ... }  // 在组件内 @Component struct FancyUse {   @Styles fancy() {     .height(100)   } } 
  • 组件内@Styles的优先级高于全局@Styles。
// 定义在全局的@Styles封装的样式 @Styles function globalFancy  () {   .width(100)   .height(100)   .backgroundColor(Color.Pink) }  @Entry @Component @Preview struct FancyUse {   @State heightValue: number = 100   // 定义在组件内的@Styles封装的样式   @Styles fancy() {     .width(200)     .height(this.heightValue)     .backgroundColor(Color.Yellow)     .onClick(() => {       this.heightValue = 200     })   }    build() {     Column({ space: 10 }) {       // 使用全局的@Styles封装的样式       Text('FancyA')         .globalFancy()         .fontSize(30)       // 使用组件内的@Styles封装的样式       Text('FancyB')         .fancy()         .fontSize(30)       //组件内优先级高于全局       Text('FancyAB')         .globalFancy()         .fancy()         .fontSize(30)     }     .alignItems(HorizontalAlign.Start)   } } 

显示效果

@Extend装饰器:定义扩展组件样式

  • @Styles用于样式的扩展
  • 可以传参数
  • 仅能全局定义
@Extend(Text) function fancyText(weightValue: number, color: Color,clickE:()=>void) {   .fontStyle(FontStyle.Italic)   .fontSize(weightValue)   .backgroundColor(color)   .onClick(clickE) } @Entry @Component struct FancyUse {   @State label: string = 'Hello World'    onClickHandler(){     console.log('40')   }   build() {     Column() {       Text(`${this.label}`)         .fancyText(30, Color.Blue,()=>{console.log('30')})       Text(`${this.label}`)         .fancyText(40, Color.Pink,()=>{this.onClickHandler()})       Text(`${this.label}`)         .fancyText(50, Color.Orange,()=>{console.log('50')})     }     .alignItems(HorizontalAlign.Start)   } } 

在这里插入图片描述
三个点击事件
点击事件

stateStyles 多态样式

stateStyles是属性方法,可以根据UI内部状态来设置样式,类似于css伪类,但语法不同。ArkUI提供以下五种状态:

  • focused:获焦态。
  • normal:正常态。
  • pressed:按压态。
  • disabled:不可用态。
  • selected:选中态。
 @Entry @Component struct FancyUse {   @State label: string = 'Hello World'    build() {     Column() {       Text(`${this.label}`)         .stateStyles({           normal:{             .backgroundColor(Color.Yellow)           },           pressed:{             .backgroundColor(Color.Pink)           }         })         .fontSize(40)     }     .alignItems(HorizontalAlign.Start)   } } 

相关内容

热门资讯

如何分辨真伪!潮汕掌上娱透视怎... 如何分辨真伪!潮汕掌上娱透视怎么买,皇豪互众辅助软件是干嘛的(有挂开挂辅助下载);无需打开直接搜索加...
第二分钟指导!微信小程序游戏辅... 第二分钟指导!微信小程序游戏辅助器,兴动互娱软件辅助下载(有挂开挂辅助软件);无需打开直接搜索薇:1...
透明总结!微信小程序微乐辅助器... 透明总结!微信小程序微乐辅助器破解版,雀友会广东潮汕麻雀万能辅助器,2026新版教程!(有挂开挂辅助...
4攻略!微信微乐小程序修改器,... 4攻略!微信微乐小程序修改器,广东雀神挂机怎么样(有挂开挂辅助器);无需打开直接搜索薇:136704...
一分钟揭秘!微乐小程序免费黑科... 您好:微乐小程序免费黑科技这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户...
第6阶段精通!情怀打七开辅助,... 第6阶段精通!情怀打七开辅助,潮友会鱼虾蟹怎么发现软件控制(有挂开挂辅助器);无需打开直接搜索加薇1...
透视脚本!新道游房间,微乐小程... 透视脚本!新道游房间,微乐小程序游戏辅助器脚本官网,解密教程(有挂开挂辅助软件);无需打开直接搜索薇...
3操作!小程序微乐陕西挖坑辅助... 3操作!小程序微乐陕西挖坑辅助器,天酷游戏交易平台(有挂开挂辅助工具)1、下载安装好小程序微乐陕西挖...
玩家必备科普!湖北逍遥辅助器,... 您好:湖北逍遥辅助器这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特...
第7刹那精通!广东老友麻将有挂... 您好:广东老友麻将有挂吗这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的...