Intégration web

Material Icons : les icônes Material Design Google

Material-Icons Google Material-Design Icones Design Ui Icones-Vectorielles Front-End Ressources-Design Icon-Library Css Google-Fonts Integration-Web Framework-Icones
Material Icons : les icônes Material Design Google

Intégrez Material Icons de Google dans vos apps web : librairie exhaustive Material Design, formats Outlined, Rounded, Sharp, tailles et personnalisation.

Introduction et présentation

Material Icons est la bibliothèque d'icônes officielle de Google. Conçue avec les principes du Material Design, elle offre un style moderne et minimaliste.

À retenir : Material Icons = Google Design. Moderne, cohérent et populaire. Parfait pour Material Design projects.

Avantages :

  • Design moderne et épuré (Material Design)
  • 1000+ icônes en 5 poids (thin, light, regular, medium, bold)
  • Multiple styles : outlined, filled, two-tone
  • Optimisé pour Angular Material
  • CDN global Google (ultra rapide)

Installation et setup

CDN Google :

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

NPM :

npm install @mui/icons-material

// React usage
import HomeIcon from '@mui/icons-material/Home';

Multiple styles :

<!-- Outlined -->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons+Outlined" rel="stylesheet">

<!-- Filled -->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons+Sharp" rel="stylesheet">

<!-- Two-tone -->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons+Two+Tone" rel="stylesheet">

Utilisation basique

Filled (par défaut) :

<span class="material-icons">home</span>
<span class="material-icons">favorite</span>
<span class="material-icons">settings</span>

Outlined :

<span class="material-icons-outlined">home</span>
<span class="material-icons-outlined">favorite</span>

Poids (densité) :

<span class="material-icons" style="font-weight: 300;">home</span>  <!-- Light -->
<span class="material-icons" style="font-weight: 400;">home</span>  <!-- Regular -->
<span class="material-icons" style="font-weight: 700;">home</span>  <!-- Bold -->

Customisation

Tailles standardisées :

.material-icons.md-18 { font-size: 18px; }
.material-icons.md-24 { font-size: 24px; }
.material-icons.md-36 { font-size: 36px; }
.material-icons.md-48 { font-size: 48px; }

<!-- Usage -->
<span class="material-icons md-48">home</span>

Couleur :

.material-icons {
    color: #1976d2;  /* Material Blue */
    vertical-align: middle;
}

.material-icons.secondary {
    color: #f50057;  /* Material Pink */
}

Animations :

.material-icons.spin {
    animation: spin 1s linear infinite;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

Intégration avec frameworks

Angular Material :

import { MatIconModule } from '@angular/material/icon';

@NgModule({
  imports: [MatIconModule]
})
export class AppModule { }

// Template
<button mat-icon-button>
  <mat-icon>favorite</mat-icon>
</button>

React (MUI) :

import HomeIcon from '@mui/icons-material/Home';
import { IconButton } from '@mui/material';

function MyComponent() {
  return (
    <IconButton>
      <HomeIcon sx={{ fontSize: 40 }} />
    </IconButton>
  )
}

Vue :

// HTML
<i class="material-icons">home</i>

// Ou avec composant custom
<material-icon name="home"></material-icon>

Cas d'usage et exemples

Navigation avec icônes :

<nav class="bottom-nav">
  <a href="/">
    <span class="material-icons">home</span>
    <label>Accueil</label>
  </a>
  <a href="/search">
    <span class="material-icons">search</span>
    <label>Recherche</label>
  </a>
</nav>

FAB Button (Floating Action Button) :

<button class="fab">
  <span class="material-icons">add</span>
</button>

<style>
.fab {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background-color: #1976d2;
    border: none;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

.fab .material-icons {
    color: white;
    font-size: 24px;
}
</style>

Comparaison et bonnes pratiques

Material Icons vs Font Awesome :

  • Material Icons : Modern design, Google integration, Material Design first
  • Font Awesome : Plus d'icônes, meilleur support, plus populaire

Quand utiliser Material Icons :

  • Projets Angular Material
  • Applications Material Design
  • Applications Google-like
  • Besoin de styles multiples (outlined, filled)

Optimisation :

  • Utilisez les icônes outlined pour une apparence légère
  • CDN Google est ultra-rapide
  • Préférez les variants spécifiques si possible
Conclusion : Material Icons est le meilleur choix pour les applications Material Design et Angular Material. Design moderne et performant.

Questions fréquentes

Via CDN Google Fonts : ajoutez dans le : . Utilisez ensuite : home. Le nom de l'icône est le texte interne. Pour Material Symbols (la version moderne avec variants) : . Préférez cdn.jsdelivr.net pour la performance et la conformité CSP : .

Angular Material intègre nativement les Material Icons via le composant . Importez MatIconModule dans votre module/composant standalone. Utilisation basique : home. Pour changer la taille, utilisez la propriété CSS font-size. Angular Material ajoute automatiquement les attributs aria-hidden="true" sur les icônes décoratives. Pour les icônes personnalisées SVG, utilisez MatIconRegistry : this.matIconRegistry.addSvgIcon("mon-icone", this.sanitizer.bypassSecurityTrustResourceUrl("/assets/icons/mon-icone.svg")).

Material Icons (la version classique) propose ~2000 icônes en 5 styles (Filled, Outlined, Rounded, Sharp, Two Tone) — chaque style est une police séparée. Material Symbols (2021+, version moderne) propose 3000+ icônes avec des variables CSS pour personnaliser dynamiquement le remplissage (0-1), le poids, le grade et la taille optique sans changer de police. Material Symbols est la direction future de Google — plus flexible avec less requests HTTP. Choisissez Material Symbols pour les nouveaux projets, gardez Material Icons pour la compatibilité avec les projets existants.

Optimisations pour les performances : (1) préchargez la police avec pour éviter le render-blocking, (2) ajoutez font-display: swap dans votre CSS pour éviter le Flash Of Invisible Text (FOIT), (3) pour les icônes critiques Above-the-Fold, définissez une taille explicite sur le conteneur pour éviter le CLS (Cumulative Layout Shift), (4) en production, self-hostez les polices Material Icons avec le package npm @material-design-icons/svg pour éviter la dépendance Google Fonts et améliorer les TTFB.

Partager