Angular 角材料设计-如何添加自定义按钮颜色?
我想添加我自己的自定义颜色,类似于“主”、“警告”等。 例如,我为橙色背景添加了一个类,但我将其用作类而不是颜色属性。它可以工作,但是代码看起来有点混乱Angular 角材料设计-如何添加自定义按钮颜色?,angular,material-design,angular-material2,Angular,Material Design,Angular Material2,我想添加我自己的自定义颜色,类似于“主”、“警告”等。 例如,我为橙色背景添加了一个类,但我将其用作类而不是颜色属性。它可以工作,但是代码看起来有点混乱 描述 使停止工作 使用组件级引用的样式表将其添加为color=“orange”? .mat-button, .mat-raised-button{ background-color:red; } 注意:在组件级别声明样式表引用。 只有通过为背景色橙色定义一个类并将其用作类属性,才能以常规css方式更改按钮的颜色 如果需要将其用作
描述
使停止工作
使用组件级引用的样式表将其添加为
color=“orange”
?
.mat-button, .mat-raised-button{
background-color:red;
}
注意:在组件级别声明样式表引用。
只有通过为背景色橙色定义一个类并将其用作类属性,才能以常规css方式更改按钮的颜色 如果需要将其用作color=“橙色”。然后你需要用你需要的颜色创建你自己的主题。请参考如何做。您甚至可以对每个元素进行自定义。通过,您可以根据元素选择不同的主题 但您仍然不能像color=“orange”那样使用它,您可以将橙色定义为主色或强调色,并根据需要将其用作color=“primary”或color=“accent” 主题只能有以下不同颜色的项目
- 主调色板:最广泛用于所有屏幕和组件的颜色李>
- 强调调色板:用于浮动操作按钮和交互元素的颜色
- 警告调色板:用于传达错误状态的颜色
- 前景调色板:文本和图标的颜色
- 背景调色板:用于元素背景的颜色
link
这个答案是在angular 5.1.1项目的上下文中使用angular/cli和angular material 5.1
垫子。。。似乎从父对象继承了其颜色,因此如果使用span或div环绕并应用该颜色,则该颜色应该会穿透。在我的特定用例中,我们希望动态设置图标的颜色。我们的初始实施和新实施如下
该类分配将覆盖mat icon类。这似乎可以使用,但不再适用:
<mat-icon [class]="custom-class">icon name</mat-icon>
图标名称
现在您可以包装:
<span [class]="custom-class"><mat-icon>icon name</mat-icon></span>
图标名称
第一种情况导致单词“图标名称”按需要着色,但没有图标。第二种情况会导致所需的行为。我已经为所有mat按钮类型创建了样式 (添加到全局样式中)
可以使用具有背景的类 例如:- CSS:-
.save-button {
background: green;
}
<button mat-mini-fab class="save-button" >
<mat-icon >save</mat-icon>
</button>
HTML:-
.save-button {
background: green;
}
<button mat-mini-fab class="save-button" >
<mat-icon >save</mat-icon>
</button>
拯救
因为当您使用自定义颜色时,模板检查器会给出错误/警告,所以有一种黑客方法。这只适用于真正绝望的人,他们喜欢事情严格,并从IDE得到适当的暗示:)
第一步是创建自己的环境声明。我已经将我的添加到了polyfills.ts
,因为我有点懒:
declare module '@angular/material/core/common-behaviors/color' {
interface CanColor {
// @ts-ignore
color: CustomThemePalette;
}
}
@ts ignore
是必需的,否则会出现以下错误:
TS2717:后续属性声明必须具有相同的类型。属性“color”的类型必须为“themepalete”,但此处的类型为“customthemepalete”
然后,您可以定义自定义主题调色板:
import type { ThemePalette } from '@angular/material/core/common-behaviors/color';
export type CustomThemePalette = ThemePalette | 'secondary' | 'success' | 'alert';
现在,您终于可以在模板中使用这些自定义颜色,IDE将提示它们,并在您输入错误时通知您。胜利
注:显然,当材料决定更改其
CanColor
界面或将其四处移动时,情况会变得越来越糟,但我认为适应此类更改相对容易简单地说,您不能添加color=“orange”
。要做到这一点,你必须创建自己的主题。如果你只想分配一个字符串,你不需要绑定:color=“success”
。是的,这里的目的是你可以分配任何“字符串”值,这些值将生成CSS类,我们可以自定义所需的颜色,就像上面的一样。我分配了字符串“Success”,它生成了matsuccess作为一个类。回答得很好。非常简单,非常有效。非常感谢毗瑟奴黛夫和戈皮坦克!最容易遵循!这太神奇了,我不知道你能做到。非常感谢。