当前位置: 首页 > news >正文

鸿蒙开发03样式相关介绍(二)

文章目录

  • 一、样式复用
    • 1.1 @Styles修饰符
    • 1.2 @Extend修饰符
  • 二、多态样式


一、样式复用

在页面开发过程中,会出出现大量重复的样式设置代码,可以使用@Styles和@Extend修饰符将帮助我们进行样式复用。

1.1 @Styles修饰符

@Styles装饰器可以将多条样式设置提炼成一个方法,直接在组件声明的位置调用。通过@Styles装饰器可以快速定义并复用自定义样式。

@Styles
function payWechatStyle(){
  .width('100%')
  .height(50)
  .borderRadius(4)
  .backgroundColor("#00c168")
  .onClick(()=>{
    promptAction.showToast({message: '微信支付成功'})
  })
}

@Entry
@Component
struct StylesCase {
  @Styles
  payAliStyle(){
    .width('100%')
    .height(50)
    .borderRadius(4)
    .backgroundColor("#ff1256e0")
    .onClick(()=>{
      promptAction.showToast({message: '支付宝支付成功'})
    })
  }

  build() {
    Column({space: 20}){
      Row(){
        Button("微信支付", { type: ButtonType.Normal })
          .payWechatStyle()
          .fontColor(Color.White)
      }.padding(20)
      Row(){
        Button("支付宝支付", { type: ButtonType.Normal })
          .payAliStyle()
          .fontColor(Color.White)
      }.padding(20)

      Row(){
        Button("支付宝支付", { type: ButtonType.Normal })
          .payAliStyle()
          .fontColor(Color.White)
      }.padding(20)
    }
  }
}

使用说明

  • 仅支持通用属性和通用事件
  • 可以定义在组件内(不需加function)或全局
  • 同时在组件内或全局定义时,组件内生效

限制条件

  • 方法中不能有参数
  • 不支持导出

1.2 @Extend修饰符

@Extend修饰符针对某类组件进行样式扩展,同样为了复用样式。

@Entry
@Component
struct ExtendCase {

  build() {
    Column({space: 20}){
      Button('支付宝支付')
        .payButton('alipay')
      Button('微信支付')
        .payButton('wechat')
    }
    .padding(20)
    .width('100%')
  }
}

@Extend(Button)
function payButton(type: 'alipay'|'wechat'){
  .type(ButtonType.Normal)
  .fontColor(Color.White)
  .width('100%')
  .height(50)
  .borderRadius(4)
  .backgroundColor(type == 'wechat'? "#00c168" : "#ff1256e0")
  .onClick(()=>{
    if (type == 'alipay') {
      promptAction.showToast({message:"支付宝支付成功"})
    }else{
      promptAction.showToast({message:"微信支付成功"})
    }
  })
}

使用说明

  • 只能定义在全局函数
  • 指定组件,只支持指定组件的私有属性、私有事件
  • 函数支持传参

限制条件

  • 不支持导出

二、多态样式

多态样式(stateStyles)根据组件内部状态的不同,快速设置不同样式。
ArkUI提供五种状态:

  • focused:获焦态
  • normal:正常态
  • pressed:按压态
  • disabled:不可用态
  • selected:选中态
@Entry
@Component
struct StateStylesCase {

  build() {
    Column({space: 20}){
      Row(){
        Text('你好!鸿蒙')
      }
      .padding(20)
      .height(80)
      .border({
        color: '#f3f4f5',
        width: 3
      })
      .borderRadius(4)
      .stateStyles({
        normal: {
          .backgroundColor(Color.White)
        },
        pressed: {
          .backgroundColor('#eee')
        }
      })
      .width('100%')
    }
    .padding(20)
    .justifyContent(FlexAlign.Center)
    .width('100%')
    .height('100%')
  }
}

设置normal和pressed状态时的背景颜色,按压时是#eee颜色,松开是白色。

使用说明
多态样式只支持通用属性的设置。

相关文章:

  • 《MOSFET:静电场中的无声刺客》
  • DirectX安装步骤(包含安装包)DirectX详细图文安装教程
  • LangChain 安装与环境搭建,并调用OpenAI与Ollama本地大模型
  • 31天Python入门——第17天:初识面向对象
  • Android设计模式之责任链模式
  • 小程序:富文本的处理
  • C 语言基础知识
  • windows与ubuntu双硬盘双系统安装及启动(全流程成功)
  • Linux中输入输出管理技巧
  • jmeter线程组高并发(详细讲解)
  • 微信小程序实现动态二维码海报生成与保存 | 高效便捷的前端方案
  • UE5学习笔记 FPS游戏制作33 游戏保存
  • 数据库中的函数:高效操作与灵活运用
  • nut-collapse折叠面板(案例)
  • OSPF协议(数据包刨析)
  • NLP高频面试题(二十七)——SFT有哪几种参数微调方法?有什么优缺点?
  • 开源守护,智护童年——幼儿园未成年行为与安全智能监控系统
  • 贪心算法(14)(java)无重叠区间
  • SSL提供了哪些安全服务
  • 镜头光圈总结
  • 记事本做网站滚动条/新媒体营销六种方式
  • 驻马店做网站优化/seo发帖软件
  • 2015年做哪个网站能致富/索引擎优化 seo
  • 批量做网站软件/电商网站前端页面内容编写
  • 长春网站制作wang/上海高端seo公司
  • 哈尔滨建站哪个好/台州网站建设方案推广