HarmonyOS4.0系列——04、@Styles、@Extend、@Extend事件以及多态样式stateStyles

@Styles、@Extend、@Extend事件以及多态样式stateStyles

@Styles

通用样式
类似于css中的class
语法一:内部样式 放在struct内

  @Styles commonStyle(){
    .backgroundColor(Color.Pink)
    .padding('20px')
  }

语法二:外部样式

@Styles function commonStyle() {
  .backgroundColor(Color.Pink)
  .padding('40px')
}

调用.commonStyle()

总结:@Styles 内部样式和外部样式,内部样式优先级高于外部样式,内部不要需要用函数function定义,外部需要function;
缺点:只能用于通用样式,@Styles不能进行传参

那么如何进行传参呢?

@Extend()

在@Styles的基础上,可以使用@Extend,用于扩展原生组件样式。

@Extend(Text) function textStyle(fs:number){
  .fontSize(fs).fontColor(Color.Pink)
}

使用规范:和@Styles不同,@Extend仅支持定义在全局,不支持在组件内部定义。

@Extend(Text) function fancy () {
  .fontColor(Color.Red)
}

// superFancyText可以调用预定义的fancy
@Extend(Text) function superFancyText(size:number) {
    .fontSize(size)
    .fancy()
}

例:

@Entry
@Component
struct ExtendFun {
  @State message: string = '@Extend'

  build() {
    Row() {
      Column() {
        // Text(this.message).fontSize(40)
        Text('Southern Wind').superFancyText(40)
      }
      .width('100%')
    }
    .height('100%')
  }

}


// @Extend(Text) function textStyle(fs:number){
//   .fontSize(fs).fontColor(Color.Pink)
// }

@Extend(Text) function fancy () {
  .fontColor(Color.Red)
}

// superFancyText可以调用预定义的fancy
@Extend(Text) function superFancyText(size:number) {
  .fontSize(size)
  .fancy()
}

效果:

在这里插入图片描述

当然函数与函数直接也是可以传参的

@Entry
@Component
struct ExtendFun {
  @State message: string = '@Extend'

  build() {
    Row() {
      Column() {
        // Text(this.message).fontSize(40)
        Text('Southern Wind').fancy('blue',FontWeight.Bold)
        Text('HarmonyOS4.0').superFancyText(20)
      }
      .width('100%')
    }
    .height('100%')
  }

}

@Extend(Text) function fancy (color:Color|string,fw:FontWeight) {
  .fontColor(color)
  .fontWeight(fw)
}

// superFancyText可以调用预定义的fancy
@Extend(Text) function superFancyText(size:number) {
  .fontSize(size)
  .fancy(Color.Red,FontWeight.Bold)
}


在这里插入图片描述

**@Extend(Text)**如果里面是Text就代表对Text标签生效,如果为Button则代表对Button标签生效

@Extend函数事件

声明点击事件

@Extend(Button) function btnFun(click:()=>void) {
  .fontSize(30)
  .width(150)
  .height(50)
  .onClick(()=>{
    click()
  })
}

标签调用:

@Entry
@Component
struct ExtendFun {
  @State count: number = 0
  build() {
    Row() {
      Column() {
        Button('点击 ' + this.count).btnFun(()=>{
          this.count ++
        })
      }
      .width('100%')
    }
    .height('100%')
  }

}

效果:
在这里插入图片描述

stateStyles:多态样式

stateStyles可以依据组件的内部状态的不同,快速设置不同样式。其实可以把它理解为一种属性方法,类似于css伪类,但是语法不同

  • focused:获焦态。
  • normal:正常态。
  • pressed:按压态。
  • disabled:不可用态。

演示

@Entry
@Component
struct Index {
  @State message: string = 'Southern Wind'

  build() {
    Row() {
      Column() {
        TextInput()
        Divider()
          .margin(20)
        TextInput()
          .fontSize(30)
          .fontWeight(FontWeight.Bold)
          .stateStyles({
            normal:{
              .backgroundColor(Color.Yellow)
            },
            focused:{
              .backgroundColor(Color.Pink)
            },
            pressed:{
              .backgroundColor(Color.Blue)
            }
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e28693389b8f4ee88bd31ad691a9d783.gif#pic_center)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/278135.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

防火墙内容安全特性(HCIP)

目录 一、安全基本概要 信息安全基本概要 信息安全能力构建 访问控制 入侵检测系统 二、安全风险 TCP/IP协议栈常见安全风险 内容安全威胁 挖矿/勒索 黑客入侵 拒绝服务攻击威胁 个人安全意识薄弱带来的威胁 网络攻击的趋势 三、内容安全过滤技术背景 1、内容安…

DCDC--电感的选择和影响

1、感值L的影响 1.1、纹波Ripple的影响:感值越大,纹波越小 1.2、负载瞬态响应Load Transient的影响:感值越大,负载瞬态响应越差 2、直流电阻DCR的影响 2.1、效率Efficiency的影响 相同型号,感值越大,DC…

写在2023的最后一个工作日

快 是的,又到年底了,这是没有任何娱乐的一年,有的只是四处奔波。 今年初回到北京,领导就开始渲染紧张的气氛。最终还是坚持不下去了,给了n1的赔偿,整个部门也就散了。我也达成新成就,连续干黄…

数据库开发之事务和索引的详细解析

2. 事务 场景:学工部整个部门解散了,该部门及部门下的员工都需要删除了。 操作: -- 删除学工部 delete from dept where id 1; -- 删除成功 ​ -- 删除学工部的员工 delete from emp where dept_id 1; -- 删除失败(操作过程中…

paypal实操常见问题——绑卡篇

1、绑美金提款卡的时候卡号类型怎么选? PayPal在绑定美金提现卡的时候,页面里会出来两个选项,一个是“关联借记卡或信用卡”,一个是“关联银行账户” “关联借记卡或信用卡”这个选项是消费的时候用来付款的卡; “关…

Nginx服务器中设置禁止访问文件或目录的方法

autoindex off; 规则描述: 如果访问NGINX下的一个web应用,如果输入是一个目录名,而且该目录下没有一个默认访问文件,那么Nginx会将该目录下的所有文件列出来,这种敏感信息泄露是 严格禁止的。Nginx默认的是关闭目录列…

C# Image Caption

目录 介绍 效果 模型 decoder_fc_nsc.onnx encoder.onnx 项目 代码 下载 C# Image Caption 介绍 地址:https://github.com/ruotianluo/ImageCaptioning.pytorch I decide to sync up this repo and self-critical.pytorch. (The old master is in old ma…

第52周,第三期技术动态

大家好,才是真的好。 今天周五,我们主要介绍与Domino相关产品新闻,以及互联网或其他IT行业动态等。 一、HCL Domino将重新开发和发布应用市场 为了持续吸引新客户,现有客户以及技术爱好者和专业人士,在2023年的 Col…

JavaScript(简写js)常用事件举例演示

目录 1.窗口事件onblur :失去焦点onfocus:获得焦点onload:窗口加载事件onresize:窗口大小缩放事件 二、表单事件oninput :当文本框内容改变时 ,立即将改变内容 输出在控制台onchange: 内容改变事件onclick:鼠标单击时触发此事件 三…

基于Python的短视频APP大学生用户数据分析预测

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目背景 本项目以国内高校大学生在一段时间内对某短视频平台的使用数据为基础。通过数据分析和建模方法,我们深入挖掘这些数据中所蕴含的信息,以实现对高校和大学生维度的统计分析。…

演员-评论家算法:多智能体强化学习核心框架

演员-评论家算法 演员-评论家算法:策略梯度算法 DQN 算法演员-评论家的协作流程演员:策略梯度算法计算智能体策略预期奖励的梯度公式分解时间流程拆解 通过采样方法近似估计梯度公式拆解时间流程拆解 改进策略设置基线:适用于减小方差、加速…

Flowable中6种部署方式

1. addClasspathResource src/main/resources/processes/LeaveProcess.bpmn20.xml Deployment deploy repositoryService.createDeployment().name("请假审批").addClasspathResource("processes/LeaveProcess.bpmn20.xml").deploy();2. addInputStream…

简述计算机⽹络七层模型和各⾃的作⽤?

这张图大家看下就好了,慢慢学习了解上面的东西就好,在面试中需要回答以下内容: 物理层:主要负责通过物理媒介传输⽐特流,如电缆、光纤、⽆线电波等。物理层规定了物理连接的规范,包括电缆的类型、接⼝的规范…

苹果Mac电脑甘特图管 EasyGantt最新 for mac

EasyGantt提供直观的界面,让用户能够轻松创建具有时间轴视图的甘特图。你可以添加并排列任务、设置任务的开始和结束日期、调整任务之间的依赖关系等。 任务管理:软件允许你添加、编辑和删除任务,设定任务的优先级和状态,并为每个…

Decorator装饰模式(单一责任)

Decorator(装饰模式:单一责任模式) 链接:装饰模式实例代码 解析 目的 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性&#xff…

web前端 JQuery下拉菜单的案例

浏览器运行结果&#xff1a; JQuery下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/17LXZigLQ8yau0toTGj4P_Q?pwd4332 提取码&#xff1a;4332 代码&#xff1a; <!doctype html> <html> <head> <meta charset"UTF-8"><…

超详细YOLOv8图像分类全程概述:环境、训练、验证与预测详解

目录 yolov8导航 YOLOv8&#xff08;附带各种任务详细说明链接&#xff09; 搭建环境说明 数据集准备 项目目录结构展示 不同版本性能对比 模型参数和性能解释 模型对比 训练 执行训练示意代码 训练参数说明 训练正常执行示意 训练结果文件解释 weights args.yaml…

GoogleNet

时间&#xff1a;2014 网络中的亮点&#xff1a; 引入了Inception结构&#xff08;融合不同尺度的特征信息&#xff09;使用11的卷积核进行降维以及映射处理添加两个辅助分类器帮助训练丢弃全连接层&#xff0c;使用平均池化层&#xff08;大大减少模型参数&#xff09; Alex…

高光回眸:阿里云容器服务如何全面助力精彩亚运

作者&#xff1a;刘佳旭 谢乘胜 贤维 引言 2023 年&#xff0c;第 19 届杭州亚运会在杭州成功举办。在亚运之光和科技之光的交相辉映下&#xff0c;这届亚运会成为亚运史上首届“云上亚运”&#xff0c;用云计算创造了历史&#xff0c;赛事核心系统和转播全面上云&#xff0c…

如何使用Spoofy检测目标域名是否存在欺骗攻击风险

关于Spoofy Spoofy是一款功能强大的域名安全检测工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以轻松检测单个目标域名或域名列表中的域名是否存在遭受欺诈攻击的风险。 该工具基于纯Python开发&#xff0c;可以根据SPF和DMARC记录来检测和判断目标域名是否可…