带有扩展类的 AngularJS 动态样式

Posted

技术标签:

【中文标题】带有扩展类的 AngularJS 动态样式【英文标题】:AngularJS dynamic styling with extended class 【发布时间】:2018-07-08 05:53:48 【问题描述】:

我正在尝试显示一个状态标签,该标签将包含不同的背景颜色和文本,具体取决于 AngularJs 中的状态(例如,“新”= 绿色,“活动”= 黄色)。我目前有一个带有

的 css 文件
.status 
    padding: 4px 8px;
    font-size: 12px;
    line-height: 12px;
    color: white;
    border-radius: 16px;


.status.new 
    background-color: #673AB7;
    border: 1pt solid #673AB7;


.status.active 
    background-color: #4CAF50;
    border: 1pt solid #4CAF50;

在我的 html 中,我引用了多个类,如下所示

<span class="status pull-right">statusProperty</span>

是否可以将 class 与 ng-class 结合使用扩展类,或者可以通过 ng-style 来实现?

【问题讨论】:

【参考方案1】:

是的,您可以使用 ng-classclass

你的情况是这样的:

<span class="status pull-right" ng-class="'new': <condition_for_being_green>, 'active': <condition_for_being_yelow>">statusProperty</span>

这将使您的元素通过class 属性具有statuspull-right 类,并在分别满足绿色和黄色条件时具有new | active 类。

这意味着元素将具有类

status pull-right new 如果&lt;condition_for_being_green&gt; 为真 status pull-right active 如果&lt;condition_for_being_yellow&gt; 为真 status pull-right new active 如果&lt;condition_for_being_green&gt;&lt;condition_for_being_yellow&gt; 为真 status pull-right 如果&lt;condition_for_being_green&gt;&lt;condition_for_being_yellow&gt; 为假

【讨论】:

【参考方案2】:

是的,您可以将classng-class 应用于同一元素,如the reference 状态。唯一要注意的是,当 ng-class 也存在时,避免在 class 属性中插入表达式。

此外,考虑到可重用性和您已经编写了所需类的事实,使用 CSS 类而不是内联样式当然更好。

【讨论】:

以上是关于带有扩展类的 AngularJS 动态样式的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS 策略来防止类的无样式内容闪现

angular js 初学

带有 ControllerAs 和 TypeScript 类的 AngularJs 指令

带有条件表达式的 AngularJS ng 样式

如何在angularjs中动态地将样式属性添加到具有ng-class的元素

带有 AngularJS 的某种俄罗斯娃娃容器的动态编辑表单