禁用 ng 时如何更改 CSS?

Posted

技术标签:

【中文标题】禁用 ng 时如何更改 CSS?【英文标题】:How to change CSS when it's ng-disabled? 【发布时间】:2015-09-21 06:05:38 【问题描述】:

我有这个button

<input type="submit" value="@Translator.Translate("PAYOUT")"
     class="btn-block secondary-button save-changes padding-8"
     ng-disabled="PayoutEnabled==false" ng-click="PayOut()" />

但即使它被禁用,它也具有与启用时相同的class,只是不可点击。我想在它被禁用时更改背景,以便用户可以看到该按钮被禁用。我怎样才能做到这一点?我需要一些ng-disabled CSS 类还是有其他方法?

【问题讨论】:

【参考方案1】:

Toress 的回答应该可以正常工作,但您根本不需要 AngularJS 的帮助(本地实现和使用总是最好的)。

您可以使用 CSS3,因为您已经有一个类。示例:

input.save-changes 
    /* some style when the element is active */


input.save-changes[disabled] 
    /* styles when the element is disabled */
    background-color: #ddd;

编辑:您可以立即在 *** 的这个页面上对其进行测试。只需检查蓝色按钮元素并放置disabled 属性并查看它的CSS。

.save-changes 
  background-color: red;
  padding: 7px 13px;
  color: white;
  border: 1px solid red;
  font-weight: bold;

.save-changes[disabled] 
  background-color: #FF85A1
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app ng-init="PayoutEnabled = true">
  <a href="#" ng-click="PayoutEnabled = !PayoutEnabled">
  PayoutEnabled ? 'Disable' : 'Enable' the below button</a>
  <br>
  <br>

  <input class="save-changes" type="submit" value="PAYOUT" ng-disabled="PayoutEnabled == false" />
</div>

【讨论】:

这是对我有用的答案。我将 ng-disabled="disabled" 放入我的 html 和 i.fa-refresh[disabled] color: #ccc; 进入我的 CSS 很高兴这对您有所帮助! 已确认。第一个解决方案对我不起作用。这确实【参考方案2】:

使用ng-class

<input type="submit" value="@Translator.Translate("PAYOUT")" class="btn-block 
secondary-button save-changes padding-8" ng-disabled="PayoutEnabled==false" 
ng-click="PayOut()" ng-class="'diabled-class': !PayoutEnabled" />

PayoutEnabledfalse(!PayoutEnabled 为真)时,这将向输入添加 css 类 diabled-class

【讨论】:

【参考方案3】:

AngularJS 在 ng-disabledfalse 时添加伪类 disabled 所以我认为这是引用禁用按钮的最简单解决方案:

button:disabled 
    color:#717782;

【讨论】:

最好添加一些注释,而不是随便乱扔代码。 正确,值得一提的是它不适用于IE8及更低版本,很多人仍在使用。 感谢您的解决方案。恕我直言,2018 年我们可以跳过 IE8 支持。但是使用 :disabled 而不是 [disabled] ?哪种解决方案更清洁?为什么?【参考方案4】:

如果您使用的是Bootstrap 和比AngularJs 更新的Angular 版本,您可以覆盖默认样式,将其添加到styles.css 文件中

.btn.disabled, .btn:disabled 
    opacity: .35 !important;
    background-color: gray !important;

不透明度越高,颜色越深或越纯色。

【讨论】:

以上是关于禁用 ng 时如何更改 CSS?的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 Link/href 所做的 css 更改

如何使用 ng-class 更改背景颜色?

在方向更改时禁用 css 动画

带有 CSS 的样式禁用按钮

如何动态更改 css 值(如整个应用程序中的颜色)等

Angular - 使用 ng 样式更改 css