如何使 .svg 图标对禁用状态做出反应并更改其颜色?

Posted

技术标签:

【中文标题】如何使 .svg 图标对禁用状态做出反应并更改其颜色?【英文标题】:How to make .svg icon to react to disabled state and change it's color? 【发布时间】:2019-02-13 20:25:40 【问题描述】:

基本上,当图标状态处于活动状态时,我们应该显示.svg icon #1,当它被禁用时,我们应该显示.svg icon #2(基本上根据按钮图标的状态在任何给定时间显示这两者之一)。

问题在于它是一个自定义的 .svg,所以我必须使用 Angular 1.x 和 md-svg-icon="path\...\icon.svg",理想情况下我只想向静态导入添加 1 个图标,然后将 fill: white 更改为 css 属性(我在其他相关问题中发现了这一点),但在这里你可以看到我不能对整个图片使用填充(一部分应该保持红色,只有另一部分应该改变颜色)这使解决方案复杂化。

我想到的另一个选项是将它与ng-style 指令(以及一些isIconDisabled 标志到控制器)连接,并将这两个图标添加到静态导入,然后显示第一个或另一个。是否有意义?不幸的是,我没有太多使用 AngularJS 的经验。

【问题讨论】:

【参考方案1】:

您可以通过设置 svg 图标的特定元素的样式来更改图标的外观。但是一旦图标在未来发生变化,这将是一种麻烦和不便。

我会选择您的第二个选项,并使用标志来控制各州的图标。 基本上,您只需使用元素的状态(例如按钮)切换图标:

<button ng-click="doSmth()" ng-disabled="btnDisable">
  <img ng-src="activeButtonIconURL" ng-if="!btnDisable">
  <img ng-src="disabledButtonIconURL" ng-if="btnDisable"> 
</button>

这是上述示例的有效plunker。

【讨论】:

以上是关于如何使 .svg 图标对禁用状态做出反应并更改其颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如果用户禁用了他们的密码,如何对 iOS 数据保护做出反应?

重启后如何使机器人注册反应

[使用message.content.startswith时如何使Discord机器人对服务器表情符号做出反应

如何使字体真棒图标按钮的禁用状态?

如何使用顺风 css 进行页面转换并做出反应?

如何使状态栏变为白色并带有黑色图标?