如何在 Angular Material 中创建基于主题的 CSS 动画
How to create theme based CSS animations in Angular Material
我正在使用 angular material 并且有 3 个不同的主题。我正在尝试制作一个 "pulse" 动画,我正在使用主题的主要颜色来使
脉动
根据我的阅读,angular 似乎没有将关键帧限定在组件范围内,而是在全局范围内声明它们。因此,无论我最后声明的主题在哪里,它都会覆盖之前的主题,最后所有主题的 kyframes 颜色都是相同的。
我创建了自定义组件并添加了关键帧和动画,如下所示。然而,当我改变每个主题时,颜色并没有改变。
执行此操作并仍然使用主题的原色的正确方法是什么?
@import '~@angular/material/theming';
@mixin atrh-rating-component-theme($theme) {
$primary: map-get($theme, primary);
.bar {
background-color: mat-color($primary, 200);
&--selected {
background-color: mat-color($primary);
}
&--highlighted {
background-color: mat-color($primary, 800);
animation: pulse 1.3s;
animation-iteration-count: 4;
}
}
@keyframes pulse {
0% {
background-color: mat-color($primary, 900)
}
50% {
background-color: mat-color($primary, 700)
}
100% {
background-color: mat-color($primary, 900)
}
}
}
为您的主题添加一个用于关键帧的名称,并使用该名称代替常见的 'pulse'。例如:
$theme: map-merge(mat-light-theme(...), ('keyframes': 'pulse1'));
...
@mixin atrh-rating-component-theme($theme) {
$keyframes-name: map-get($theme, keyframes);
.bar {
...
&--highlighted {
...
animation: $keyframes-name 1.3s;
...
}
}
@keyframes #{$keyframes-name} {
...
}
}
我正在使用 angular material 并且有 3 个不同的主题。我正在尝试制作一个 "pulse" 动画,我正在使用主题的主要颜色来使
脉动根据我的阅读,angular 似乎没有将关键帧限定在组件范围内,而是在全局范围内声明它们。因此,无论我最后声明的主题在哪里,它都会覆盖之前的主题,最后所有主题的 kyframes 颜色都是相同的。
我创建了自定义组件并添加了关键帧和动画,如下所示。然而,当我改变每个主题时,颜色并没有改变。
执行此操作并仍然使用主题的原色的正确方法是什么?
@import '~@angular/material/theming';
@mixin atrh-rating-component-theme($theme) {
$primary: map-get($theme, primary);
.bar {
background-color: mat-color($primary, 200);
&--selected {
background-color: mat-color($primary);
}
&--highlighted {
background-color: mat-color($primary, 800);
animation: pulse 1.3s;
animation-iteration-count: 4;
}
}
@keyframes pulse {
0% {
background-color: mat-color($primary, 900)
}
50% {
background-color: mat-color($primary, 700)
}
100% {
background-color: mat-color($primary, 900)
}
}
}
为您的主题添加一个用于关键帧的名称,并使用该名称代替常见的 'pulse'。例如:
$theme: map-merge(mat-light-theme(...), ('keyframes': 'pulse1'));
...
@mixin atrh-rating-component-theme($theme) {
$keyframes-name: map-get($theme, keyframes);
.bar {
...
&--highlighted {
...
animation: $keyframes-name 1.3s;
...
}
}
@keyframes #{$keyframes-name} {
...
}
}