web-dev-qa-db-fra.com

Mat-icon ne se centre pas dans son div

Je suis très nouveau en CSS et je ne peux pas aligner l'icône mat (la bulle de pensée) sur la classe div = img (le carré vert à gauche) - voir l'image ci-jointe. En ce moment, l'icône est un peu près du sommet

Pour ajouter l'icône svg, j'ai utilisé Material Angular - Classe MatIconRegistry (je ne sais pas si c'est important)

Mon résultat:  enter image description here

Voici mon html:

<div class="container">
  <div class="img"><mat-icon svgIcon="info"></mat-icon></div>
  Some text here!
</div>

Voici mon css:

$conainer-min-width: 256px !default;
$conainer-max-width: 512px !default;
$conainer-height: 50px !default;

div.container {
  max-width: $container-max-width;
  min-width: $container-min-width;
  height: $container-height;
  margin: auto;
  color: #000000;
  background-color: #ffffff;
  line-height: $container-height;
  text-align: center;
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  border-width: 1px;
  border-style: solid;
  border-color: #9e9e9e;
  padding-right: 20px;
  position: fixed;
  z-index: 1000;
  left: 0;
  right: 0;
  top: 30px;
}


div.img {
  width: $container-height;
  height: $container-height;
  float: left;
  display: block;
  margin: 0 auto;
  border-right-width: 1px;
  border-right-style: solid;
  border-right-color: #9e9e9e;
  line-height: $container-height;
  justify-content: center;
  background-color: #3f9c35;
}

Des idées sur la façon de résoudre ce problème?

3
Mike Me

Vous devez ajouter vertical align à l'élément mat-icon ou à la classe .mat-icon

Pour remplacer toutes les icônes de matériau: Stackblitz

.mat-icon {
   vertical-align: middle;
}

Avec FLEX: Stackblitz

CSS:

.icon-text {
    display: flex;
    align-items: center;
}

HTML:

<div class="icon-text">
   <mat-icon>home</mat-icon>
   <span>Some text here 1</span>
</div>

Pour attribuer un style particulier à une icône de matériau avec une classe d'utilitaires: Stackblitz

Dans certains fichiers css globaux: 

.v-align-middle { 
   vertical-align: middle;
}

HTML:

<div>
   <mat-icon class="v-align-middle">home</mat-icon>
   <span class="v-align-middle">Some text here 1</span>
</div>

** certains frameworks css ont déjà des classes comme celle-ci, par exemple: bootstrap 4 **


Pour attribuer un style particulier à une icône de matériau: Stackblitz

CSS:

.custom-class mat-icon {
   vertical-align: middle;
}

/** or using the class .mat-icon */
.custom-class .mat-icon {
   vertical-align: middle;
}

HTML:

<div class="custom-class">
   <mat-icon>home</mat-icon>
   <span>Some text here 1</span>
</div>
9
The.Bear

Je crois que votre problème est une faute de frappe sur ces noms de variables:

$ conainer-min-width: 256px! default; 
$ conainer-max-width: 512px! default; 
$ conainer-height: 50px! default; 

qui ne correspond pas aux variables utilisées ici:

div.container { 
max-width: $ conteneur-max-width; 
min-width: $ conteneur-min-width; 
hauteur: $ conteneur-height; }

Je pense que cela devrait fonctionner une fois que vous avez changé conainer en container :)

0
A. U.