Angular中实现文字的渐变效果

基本思路是利用css中的transition属性,通过定义两个class,交替变更,实现淡入淡出的效果。

两个class的属性分别为

.message{
  color:#ff0000;
  transition:2s linear all;
  opacity:0;
}

.messageWrong{
  color:#ff0000;
  opacity:1;
}
第一个message表示正常情况下,字体为红色(或自定义为其他颜色,因为透明度为0,不会显示),透明度为0(使用display:none也可以)。

第二个messageWrong表示异常情况下,字体改为红色,透明度为1。由于transition的存在,会产生过渡的效果,也就是所谓的渐变。

Angular中可以使用ngClass来绑定作用域的class,实现动态的修改,而不需要借助于DOM。

<ion-item [ngClass]="fade()">{{errorText}}</ion-item>

这里定义了一个fade方法,根据错误与否,是否显示效果。

然后在TS中根据需求对其编写实现

fade(){
  if(this.wrong==true){
    this.statusClass.messageWrong=true;
    let _this=this;
    setTimeout(()=>_this.statusClass.messageWrong=false,2000);
    this.wrong=false;
  }
  return this.statusClass;
}

这里用wrong变量来决定是否要执行效果。wrong为true的时候,将messageWrong这个class改为true,进行显示。

然后用setTimeOut方法来做一个延时,过一定时间将其恢复,做一个渐变再恢复的过程(注意延时时间和transition定义的过渡时间要相等,因为transition的过渡时间是效果执行完毕的时间,如果想在执行完成前,或过后一阵子在恢复,可以自行设置)。如果不需要恢复,将延时的方法删除即可。


注:ngClass会覆盖标签下class属性中的所有内容,所以statusClass中也要定义一个message=true,否则该标签将会失去message这个class属性。

this.statusClass = {message:true, messageWrong:false};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值