J'essaye maintenant pendant des heures. J'utilise Material2 et je veux simplement changer la couleur de la barre de progression. Je sais qu'il y a ces thèmes (primaire/accent/avertir) mais je veux avoir une couleur sur mesure (vert) pour ma barre de progression.
J'ai déjà essayé les combinaisons css les plus étranges .. mais sans effort. Peut-être que quelqu'un a eu le même problème?
Je peux suggérer de changer l’une des couleurs prédéfinies primaires/avertir/accentuer à votre couleur personnalisée.
Dans votre styles.scss
(si votre fichier de style est css, vous devrez le changer pour supporter scss):
@import '~@angular/material/theming';
// Plus imports for other components in your app.
// Include the common styles for Angular Material. We include this here so that you only
// have to load a single css file for Angular Material in your app.
// Be sure that you only ever include this mixin once!
@include mat-core();
// Define the palettes for your theme using the Material Design palettes available in palette.scss
// (imported above). For each palette, you can optionally specify a default, lighter, and darker
// hue.
$mat-blue: (
50: #e3f2fd,
100: #bbdefb,
200: #90caf9,
300: #64b5f6,
400: #42a5f5,
500: #2196f3,
600: #1e88e5,
700: #1976d2,
800: #1565c0,
900: #0d47a1,
A100: #82b1ff,
A200: #448aff,
A400: #2979ff,
A700: #2B66C3,
contrast: (
50: $black-87-opacity,
100: $black-87-opacity,
200: $black-87-opacity,
300: $black-87-opacity,
400: $black-87-opacity,
500: white,
600: white,
700: white,
800: $white-87-opacity,
900: $white-87-opacity,
A100: $black-87-opacity,
A200: white,
A400: white,
A700: white,
)
);
$candy-app-primary: mat-palette($mat-blue, A700);
$candy-app-accent: mat-palette($mat-orange, A200, A100, A400);
// The warn palette is optional (defaults to red).
$candy-app-warn: mat-palette($mat-red);
// Create the theme object (a Sass map containing all of the palettes).
$candy-a-theme($candy-app-theme);
pp-theme: mat-light-theme($candy-app-primary, $candy-app-accent, $candy-app-warn);
// Include theme styles for core and each component used in your app.
// Alternatively, you can import and @include the theme mixins for each component
// that you are using.
@include angular-material
Vous pouvez utiliser le sélecteur ::ng-deep
pour obtenir ce que vous voulez, cette réponse contient des informations à ce sujet.
Comment je l'ai fait:
CSS
::ng-deep .mat-progress-bar-fill::after {
background-color: #1E457C;
}
::ng-deep .mat-progress-bar-buffer {
background: #E4E8EB;
}
::ng-deep .mat-progress-bar {
border-radius: 2px;
}
HTML
<mat-progress-bar mode="determinate" value="{{progress}}"></mat-progress-bar>
Et le résultat est le suivant:
Mettre à jour:
Évitez d’utiliser deep, TL; DR: Deep est techniquement invalide (comme, deprécié: p)
Pour plus d’informations, voir: Utilisation de/deep/et >>> dans Angular 2
Maintenant, pour changer la couleur de la barre de progression du tapis, Voici comment je le fais fonctionner,
Rendez-vous sur votre fichier styles.scss (ou sur le fichier css/scss principal de votre projet)
Ajouter cette classe ->
.green-progress .mat-progress-bar-fill::after {
background-color: green !important;
}
Votre tapis-progress devrait utiliser la classe ci-dessus, comme ->
<mat-progress-bar class="green-progress" mode="indeterminate"></mat-progress-bar>
Pour moi il me suffit de mettre en CSS cette règle:
div.mat-progress-bar-primary.mat-progress-bar-fill.mat-progress-bar-element::after{
background-color: green;
}
Mais c'est clairement plus facile si vous utilisez un thème.
Puisque personne n'a mentionné jusqu'à présent ...
Il est comment je l'ai résolu.
@Meet Dave a raison sur son approche. Mais vous devriez utiliser encapsulation: ViewEncapsulation.None
(désactive les modules css)
Quelque chose comme ça:
Composant
@Component({
selector: '...',
templateUrl: '...',
styleUrls: ['...'],
encapsulation: ViewEncapsulation.None,
})
Sass (dans mon cas)
.audio-progress-bar {
&.mat-progress-bar {
height: 10px;
}
.mat-progress-bar-fill::after {
background-color: #37474f;
}
.mat-progress-bar-buffer {
background-color: #90a4ae;
}
/* remove animation and the dots*/
.mat-progress-bar-background {
animation: none;
background-color: #eceff1;
fill: #eceff1;
}
}
Vue
<mat-progress-bar
class="audio-progress-bar"
mode="buffer"
></mat-progress-bar>
Angulaire 7 et matériau 7.1.1
::ng-deep .mat-progress-spinner circle, .mat-spinner circle{
stroke: green !important;
}