更改 Angular Material 的 md-slider 的默认背景颜色
Change default background color of md-slider of Angular Material
我正在使用 Angular Material 版本 2.0.0-beta.8
的 md-slider
我选择了 indigo-pink 主题并将其导入 style.css
我对自己拥有的东西非常满意,但我只想更改 滑块手柄 和 缩略图 [=37] 的背景颜色=].
显然这是由 indigo-pink.css 文件中定义的以下 css 代码设置的:
.mat-accent .mat-slider-thumb,
.mat-accent .mat-slider-thumb-label,
.mat-accent .mat-slider-track-fill{background-color:#ff4081}
其实我改indigo-pink.css就得到了我想要的,但这显然不是正确的做法
所以问题是只更改 slider handle 和 thumbnail 颜色的正确方法,为了一般性,如何仅更改 Angular Material.
主题中定义的 类 的部分属性
您可以使用 ::ng-deep
覆盖预建样式表中的任何 css class。
要为整个应用程序应用自定义更改,请将自定义 class 添加到根组件的样式表,通常是 styles.css
。
css 自定义 md-slide-toggle
:
/* CSS to change Default/'Accent' color */
::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb {
background-color: blue; /*replace with your color*/
}
::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar {
background-color: skyblue; /*replace with your color*/
}
/* CSS to change 'Primary' color */
::ng-deep .mat-slide-toggle.mat-primary.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb {
background-color: green;
}
::ng-deep .mat-slide-toggle.mat-primary.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar {
background-color: #ff99ff;
}
/* CSS to change 'Warn' color */
::ng-deep .mat-slide-toggle.mat-warn.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb {
background-color: red;
}
::ng-deep .mat-slide-toggle.mat-warn.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar {
background-color: #ffe066;
}
::ng-deep 是覆盖主题 类 的方式,如 Nehal 所述。
如果你连接更多 类,它似乎不起作用。换句话说,下面的代码不起作用
::ng-deep .mat-accent .mat-slider-thumb, .mat-accent .mat-slider-thumb-label, .mat-accent .mat-slider-track-fill {
background-color: black;
}
虽然以下版本的代码实际有效并有效地覆盖了主题 css
中设置的值
::ng-deep .mat-accent .mat-slider-thumb {
background-color: black;
}
::ng-deep .mat-accent .mat-slider-thumb-label {
background-color: black;
}
::ng-deep .mat-accent .mat-slider-track-fill {
background-color: black;
}
Angular material 个组件正在使用主题 https://material.angular.io/guide/theming
可以这样更改滑块的背景颜色:
@include mat-slider-theme(map_merge(mat-light-theme, (
accent: mat-palette(map_merge($mat-deep-orange, (
500: green,
))),
foreground: (
base: #848484,
slider-min: white,
slider-off: #bebebe,
slider-off-active: #bebebe,
),
)));
以下是我如何在短短几分钟内解决问题并使其正常运行。
在 style.css
中添加这两行,而不是在组件 CSS.
中
.mat-slide-toggle.mat-checked .mat-slide-toggle-bar {
background-color:#0056ff;//Your color
}
.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb {
background-color: #0056ff;//Your color
}
通过设置颜色更改滑块颜色
<mat-slide-toggle color="primary" [(ngModel)]="wifiStatus">Wifi</mat-slide-toggle>
如果您想一次覆盖一个滑块的颜色,即将自定义样式应用于每个滑块:
您需要将 类 添加到您的滑块:
<mat-slider class="average"
thumbLabel
[displayWith]="formatLabel"
tickInterval="1000"
min="1000"
max="5000"
(change)="updateValue($event)"
></mat-slider>
<mat-slider class="min"
thumbLabel
[displayWith]="formatLabel"
tickInterval="1000"
min="1000"
max="5000"
(change)="updateValue($event)"
></mat-slider>
<mat-slider class="max"
thumbLabel
[displayWith]="formatLabel"
tickInterval="1000"
min="1000"
max="5000"
(change)="updateValue($event)"
></mat-slider>
然后在您的 CSS 中,您可以这样自定义它们中的每一个:
:host ::ng-deep .average .mat-slider-thumb {
background-color: #ff3967;
}
:host ::ng-deep .min .mat-slider-thumb {
background-color: blue;
}
:host ::ng-deep .min .mat-slider-thumb-label {
background-color: blue;
}
:host ::ng-deep .min .mat-slider-track-fill {
background-color: blue;
}
:host ::ng-deep .max .mat-slider-thumb {
background-color: orange;
}
:host ::ng-deep .max .mat-slider-thumb-label {
background-color: orange;
}
:host ::ng-deep .max .mat-slider-track-fill {
background-color: orange;
}
the offical Angular documentation for component styles
中关于:host
和::ng-deep
的所有信息
使用 color="primary" 只是将其设置为默认主题之一。
到目前为止,更改 background-color 的唯一方法是
/deep/.mat-accent .mat-slider-thumb,
/deep/.mat-accent .mat-slider-thumb-label,
/deep/.mat-accent .mat-slider-track-fill {
background-color: #128CB0;
}
这里有人知道如何更改 thumb-label 中文本的颜色吗?在同一个 css 中添加 color: #fffff
似乎没有帮助,它仍然使用黑色作为颜色。
我正在使用 Angular Material 版本 2.0.0-beta.8
的md-slider
我选择了 indigo-pink 主题并将其导入 style.css
我对自己拥有的东西非常满意,但我只想更改 滑块手柄 和 缩略图 [=37] 的背景颜色=].
显然这是由 indigo-pink.css 文件中定义的以下 css 代码设置的:
.mat-accent .mat-slider-thumb,
.mat-accent .mat-slider-thumb-label,
.mat-accent .mat-slider-track-fill{background-color:#ff4081}
其实我改indigo-pink.css就得到了我想要的,但这显然不是正确的做法
所以问题是只更改 slider handle 和 thumbnail 颜色的正确方法,为了一般性,如何仅更改 Angular Material.
主题中定义的 类 的部分属性您可以使用 ::ng-deep
覆盖预建样式表中的任何 css class。
要为整个应用程序应用自定义更改,请将自定义 class 添加到根组件的样式表,通常是 styles.css
。
css 自定义 md-slide-toggle
:
/* CSS to change Default/'Accent' color */
::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb {
background-color: blue; /*replace with your color*/
}
::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar {
background-color: skyblue; /*replace with your color*/
}
/* CSS to change 'Primary' color */
::ng-deep .mat-slide-toggle.mat-primary.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb {
background-color: green;
}
::ng-deep .mat-slide-toggle.mat-primary.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar {
background-color: #ff99ff;
}
/* CSS to change 'Warn' color */
::ng-deep .mat-slide-toggle.mat-warn.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb {
background-color: red;
}
::ng-deep .mat-slide-toggle.mat-warn.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar {
background-color: #ffe066;
}
::ng-deep 是覆盖主题 类 的方式,如 Nehal 所述。
如果你连接更多 类,它似乎不起作用。换句话说,下面的代码不起作用
::ng-deep .mat-accent .mat-slider-thumb, .mat-accent .mat-slider-thumb-label, .mat-accent .mat-slider-track-fill {
background-color: black;
}
虽然以下版本的代码实际有效并有效地覆盖了主题 css
中设置的值::ng-deep .mat-accent .mat-slider-thumb {
background-color: black;
}
::ng-deep .mat-accent .mat-slider-thumb-label {
background-color: black;
}
::ng-deep .mat-accent .mat-slider-track-fill {
background-color: black;
}
Angular material 个组件正在使用主题 https://material.angular.io/guide/theming
可以这样更改滑块的背景颜色:
@include mat-slider-theme(map_merge(mat-light-theme, (
accent: mat-palette(map_merge($mat-deep-orange, (
500: green,
))),
foreground: (
base: #848484,
slider-min: white,
slider-off: #bebebe,
slider-off-active: #bebebe,
),
)));
以下是我如何在短短几分钟内解决问题并使其正常运行。
在 style.css
中添加这两行,而不是在组件 CSS.
.mat-slide-toggle.mat-checked .mat-slide-toggle-bar {
background-color:#0056ff;//Your color
}
.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb {
background-color: #0056ff;//Your color
}
通过设置颜色更改滑块颜色
<mat-slide-toggle color="primary" [(ngModel)]="wifiStatus">Wifi</mat-slide-toggle>
如果您想一次覆盖一个滑块的颜色,即将自定义样式应用于每个滑块:
您需要将 类 添加到您的滑块:
<mat-slider class="average"
thumbLabel
[displayWith]="formatLabel"
tickInterval="1000"
min="1000"
max="5000"
(change)="updateValue($event)"
></mat-slider>
<mat-slider class="min"
thumbLabel
[displayWith]="formatLabel"
tickInterval="1000"
min="1000"
max="5000"
(change)="updateValue($event)"
></mat-slider>
<mat-slider class="max"
thumbLabel
[displayWith]="formatLabel"
tickInterval="1000"
min="1000"
max="5000"
(change)="updateValue($event)"
></mat-slider>
然后在您的 CSS 中,您可以这样自定义它们中的每一个:
:host ::ng-deep .average .mat-slider-thumb {
background-color: #ff3967;
}
:host ::ng-deep .min .mat-slider-thumb {
background-color: blue;
}
:host ::ng-deep .min .mat-slider-thumb-label {
background-color: blue;
}
:host ::ng-deep .min .mat-slider-track-fill {
background-color: blue;
}
:host ::ng-deep .max .mat-slider-thumb {
background-color: orange;
}
:host ::ng-deep .max .mat-slider-thumb-label {
background-color: orange;
}
:host ::ng-deep .max .mat-slider-track-fill {
background-color: orange;
}
the offical Angular documentation for component styles
中关于:host
和::ng-deep
的所有信息
使用 color="primary" 只是将其设置为默认主题之一。 到目前为止,更改 background-color 的唯一方法是
/deep/.mat-accent .mat-slider-thumb,
/deep/.mat-accent .mat-slider-thumb-label,
/deep/.mat-accent .mat-slider-track-fill {
background-color: #128CB0;
}
这里有人知道如何更改 thumb-label 中文本的颜色吗?在同一个 css 中添加 color: #fffff
似乎没有帮助,它仍然使用黑色作为颜色。