angular动态样式

ngStyle

在Angular中,ngStyle是一个内置指令,用于动态设置元素的样式。它允许你基于组件中的属性或表达式来动态计算和应用CSS样式。

以下是有关ngStyle的一些要点:

  1. 基本使用:
    你可以将ngStyle指令应用于一个元素,并将一个对象作为值传递给它。对象中的键是CSS属性,值是要应用的样式值。

例如,假设你有一个组件属性backgroundColor,你可以像这样使用ngStyle:

<div [ngStyle]="{ 'background-color': backgroundColor }">动态背景颜色</div>

在上述示例中,backgroundColor属性的值将被动态地应用为div元素的背景颜色。

  1. 使用表达式:
    除了直接使用组件属性,你还可以在ngStyle中使用表达式来动态计算样式。

例如,假设你有一个组件属性isActive,你可以通过表达式来决定是否应用特定的样式:

<div [ngStyle]="{ 'background-color': isActive ? 'green' : 'red' }">根据状态应用样式</div>

在上述示例中,如果isActive为真,将应用绿色背景颜色;否则,将应用红色背景颜色。

  1. 多个样式:
    ngStyle也支持应用多个样式。你可以在对象中添加多个键值对来设置不同的样式属性。

例如:

<div [ngStyle]="{ 'font-size.px': fontSize, 'color': fontColor }">根据属性设置不同样式</div>

在上述示例中,fontSize和fontColor是组件属性,分别控制字体大小和字体颜色。

ngStyle指令使你能够在Angular中轻松地动态设置元素的样式。你可以根据组件属性或表达式来计算和应用样式,实现灵活的样式控制。

ngclass

遍历后台数据,根据不同的状态【已执行,执行中,未执行】显示不同的颜色背景
该功能用到angular的ngClass
用法

[ngClass]="{'动态添加的属性名':判断条件,多个条件用逗号分隔}" >
如:
[ngClass]="{' layui-btn-danger':item.status==='未执行','layui-btn-warm':item.status==='执行中',' layui-btn-normal ':item.status==='已执行'}" >

代码

   <div style="padding: 10px" overflow="hidden" >
          <div *ngIf="makingPlanData!=null">
            <div *ngFor="let item of makingPlanData;let index = index" style="float: left">
              <div style="float: left">
                <div>{{item.name}}</div>
                <div>{{item.date}}</div>
              </div>
              <div style="float: right" class="layui-btn layui-btn-radius  oval"  [ngClass]="{' layui-btn-danger':item.status==='未执行','layui-btn-warm':item.status==='执行中',' layui-btn-normal ':item.status==='已执行'}" ><div class="stutus">{{item.status}}</div></div>
              <hr style="width: 280px;">

            </div>

          </div>

类绑定class.active

类绑定:
类绑定允许你根据条件为元素添加或移除CSS类。你可以使用方括号语法将一个属性与一个布尔表达式绑定在一起。如果表达式的值为真,则添加对应的CSS类;如果值为假,则移除对应的CSS类。

例如,假设你有一个属性isActive,当它为真时,你想给一个元素添加一个名为active的CSS类,你可以这样写:

<div [class.active]="isActive">Some content</div>

在上面的例子中,当isActive为真时,会为div元素添加active类。

例:
选中后变颜色


<ul>
  <li *ngFor="let menu of menus;let i = index">
    <!-- 使用双花括号表达式 -->
    <a href="#"
       [class.active]="i === selectedIndex"
       (click)="selectedIndex = i"
    >{{ menu.title }}</a>
  </li>
</ul>


.active{
  color:red;
}
 selectedIndex = -1;

ngIf

在Angular中,ngIf是一个内置指令,用于根据条件在模板中渲染或销毁一个元素。ngIf else结合了ngIf指令和ng-template语法,可以让我们在条件不满足时显示备用内容。

以下是有关ngIf else的一些要点:

  1. ngIf的基本使用:
    使用ngIf指令时,你需要将它应用于一个元素或一个容器元素,并将一个条件表达式作为值传递给它。只有当条件为真时,该元素才会被渲染到DOM中。

例如,假设你有一个布尔变量showElement,你可以像这样使用ngIf:

<div *ngIf="showElement">显示该元素</div>

在上面的例子中,如果showElement为true,则div元素会被渲染到DOM中。

  1. ngIf else的使用:
    ngIf else允许你在条件不满足时显示备用内容。要使用ngIf else,你需要定义一个使用ng-template指令的模板,并使用else关键字来为它定义一个名称。

例如,假设你有一个备用内容,你可以这样使用ngIf else:

<div *ngIf="showElement; else alternateContent">显示该元素</div>
<ng-template #alternateContent>备用内容</ng-template>

在上面的例子中,如果showElement为true,则

元素会被渲染到DOM中。否则,alternateContent模板中的内容会被渲染。

  1. 多个else分支:
    如果你需要在条件不满足时显示多个备选内容,你可以使用多个ng-template来定义它们,并通过*ngIf指令的条件表达式和else关键字进行关联。只有与条件匹配的ng-template会被渲染。

例如:

<div *ngIf="condition; then firstTemplate else secondTemplate"></div>

<ng-template #firstTemplate>第一个备选内容</ng-template>
<ng-template #secondTemplate>第二个备选内容</ng-template>

在上面的例子中,如果condition为true,则firstTemplate中的内容会被渲染;否则,secondTemplate中的内容会被渲染。

使用ngIf else能够根据条件灵活地在模板中显示不同的内容。它在处理条件渲染时非常实用。

例:
选中后变色

<ul>
  <li *ngFor="let menu of menus;let i = index">
    <!-- 使用双花括号表达式 -->
    <a href="#"
       [class.active]="i === selectedIndex"
       (click)="selectedIndex = i"
    >{{ menu.title }}</a>
    <span class="indicator" *ngIf="i === selectedIndex"></span>
  </li>
</ul>

ul{
  padding: 0;
  margin: 0;
  padding: 0;
  display: flex;
  /* 将屏幕剩余空间平均分布于各子元素之间 */
  justify-content: space-between;
}
ul li {
  /* 去掉列表的 bullet */
  /*display: inline-block;*/
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  margin: 10px;
  /* 内容不折行显示 */
  white-space: nowrap;
}


a{
  text-decoration: none;
}

/* 不显示滚动条,只对基于 Webkit 内核的浏览器有效 */
::-webkit-scrollbar {
  display: none;
}


.active{
  color:red;
}
.indicator{
  background-color: brown;
  height: 2px;
  width: 2rem;
  margin-top: 2px;
}

图例
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值