J'ai mat-list
dans mon modèle html:
mat-list-item:hover { background-color: #3f51b5; }
Je souhaite afficher mat-icon
uniquement sur mat-list-item
hover. Donc, je viens avec ce css:
mat-icon { display: none; } mat-list-item:hover + mat-icon { display: block; }
Mais pour une raison quelconque, cela ne fonctionne pas
Cependant, si j'essaye de changer la couleur d'arrière-plan, il ça marche:
<mat-list *ngFor="let item of items"> <mat-list-item><mat-icon>add</mat-icon> {{ item.title }}</mat-list-item> </mat-list>
C'est probablement quelque chose à voir avec mat-icon
Pensées?
3 Réponses :
essayez ceci
mat-icon { display: none; } mat-list-item:hover > mat-icon { display: block; }
essayez ceci
mat-icon{ display: none; } mat-list-item:hover mat-icon{ display: block; }
vous n'avez pas besoin de + sélecteurs adjacents
Comment vous assurez-vous que le +
ne déplace pas le texte vers la droite lorsqu'il est affiché?
@sreginogemoh utilise visibilité: caché;
et visibilité: visible;
pour conserver l'espace de l'icône plus
Vous pouvez essayer ce code ici:
mat-list-item:hover > mat-icon{ display: block; }
OU
mat-icon{ display: none; } mat-list-item:hover mat-icon{ display: block; }
Vous avez essayé le item: hover +
children ce n'est pas courant, car le sélecteur +
est le sélecteur imedite frère, il ne sélectionne pas les enfants.
I donnez les deux codes ici
mat-list-item: hover mat-icon {display: block; } cela signifie que tous les enfants de la classe mat-list-item sélectionnent ceci.
et d'autre part mat-list-item: hover> mat-icon {display: block; }
cela signifie les enfants mais c'est sélectionner les enfants directs comme ul> li c'est sélectionner les enfants dirigés, pas les enfants enfants.
c'est le concept du sélecteur CSS Pour en savoir plus sur les sélecteurs CSS: https://www.w3schools.com/cssref/css_selectors. asp ou https://www.w3schools.com/cssref/trysel.asp p>
Merci
avez-vous essayé avec display: block! important?
@BiswajitNath vient de le faire, ne fonctionne toujours pas
@sreginogemoh pourquoi utilisez-vous le signe
+
. Utilisez l'opérateur enfant ici>
ou supprimez simplement+
.: host :: ng-deep mat-icon {display: block! important} .. essayez ceci
Par défaut, mat-icon a la propriété d'affichage 'inline-block'. Vous devez probablement le mettre en survol au lieu d'afficher «bloquer». Le problème peut être dû au conteneur avec débordement: masqué, donc lorsque vous utilisez «bloc», l'icône du tapis descend sous le bloc précédent et n'est pas visible.