J'ai un groupe de boutons à bascule. Ils sont très légers et disparaissent à l’arrière-plan sur des moniteurs de mauvaise qualité avec un niveau de luminosité élevé.
Comment puis-je les coiffer correctement? Je préférerais leur attribuer les couleurs accent ou primaire, comme vous pouvez le faire pour les boutons normaux.
Dans certains cas, les couleurs primaires et d'accent sont sombres. Donc, le texte doit devenir blanc (avec une certaine transparence). Pour les boutons normaux, cela fonctionne automatiquement.
<div class="output-size">
<mat-button-toggle-group>
<mat-button-toggle value="letter">Letter</mat-button-toggle>
<mat-button-toggle value="legal">Legal</mat-button-toggle>
<mat-button-toggle value="a4">A4</mat-button-toggle>
<mat-button-toggle value="a5">A5</mat-button-toggle>
</mat-button-toggle-group>
</div>
matButtonToggle
ne supporte pas la propriété color
comme matButton
.
Vous pouvez utiliser les classes css .mat-button-toggle
et .mat-button-toggle-checked
pour styliser les différents états.
Avec la thématique des matériaux, vous pouvez extraire du thème la palette dont vous avez besoin et appliquer la couleur de contraste par défaut de l'arrière-plan à la couleur du texte pour obtenir un contraste optimal avec des couleurs claires ou sombres.
Voici un Stackblitz avec votre exemple mat-button-toggle-group
: Stackblitz angular-t1k1x6
Theming utilisé:
@import '~@angular/material/theming';
@include mat-core();
$app-primary: mat-palette($mat-Indigo);
$app-accent: mat-palette($mat-pink, A200, A100, A400);
$app-theme: mat-light-theme($app-primary, $app-accent);
@mixin mix-app-theme($app-theme) {
$primary: map-get($app-theme, primary);
$accent: map-get($app-theme, accent);
.mat-button-toggle {
background-color: mat-color($primary);
color: mat-color($primary, default-contrast);
}
.mat-button-toggle-checked {
background-color: mat-color($accent);
color: mat-color($accent, default-contrast);
}
}
// Include the mixin
@include mix-app-theme($app-theme);
Personnaliser la présentation en utilisant votre propre thème SASS, comme l’indique l’autre réponse, est une excellente solution à court terme et vous donne beaucoup de pouvoir sur la présentation. Idéalement, cela ferait partie des déclarations de thème principales, de sorte que <mat-button-toggle-group color="primary">
(peut-être aussi aussi <mat-button-toggle color="primary">
) fonctionne sans étapes supplémentaires.
Si vous voulez simplifier cela à l’avenir, félicitez ce problème .
Une solution de contournement peut être quelque chose comme:
<mat-button-toggle-group>
<mat-button-toggle value="letter">
<button mat-button color="primary" style="pointer-events:none;">
Letter
</button>
</mat-button-toggle>
<mat-button-toggle value="legal">
<button mat-button color="accent" style="pointer-events:none;">
Legal
</button>
</mat-button-toggle>
</mat-button-toggle-group>