Créer un favicon adaptatif

Présentation de base de la création d'une icône de favori adaptative.

Dans cet article, je vais vous expliquer comment créer une favicon adaptative avec SVG. Essayez la démonstration.

Onglets du navigateur s'adaptant aux changements de thème clair et sombre du système macOS. Essayer la démo

Si vous préférez les vidéos, voici une version YouTube de cet article :

Présentation

Un favicon personnalisé est un excellent moyen de peaufiner un projet Web. Elle s'affiche dans les onglets du navigateur sur ordinateur, mais aussi dans les lecteurs "Enregistrer pour plus tard", dans les autres articles de blog qui renvoient vers votre site, et plus encore. Traditionnellement, cela se faisait avec le type de fichier .ico, mais récemment, les navigateurs ont autorisé l'utilisation de SVG, un format vectoriel. Grâce à l'amélioration progressive, vous pouvez diffuser des favicons .ico bien compatibles et passer à un favicon .svg si disponible.

Le format SVG peut être mis à l'échelle sans perte de qualité et peut être très petit. Il peut également contenir du code CSS intégré, voire des requêtes média intégrées. Cela signifie que si un favicon SVG est utilisé dans une application de lecture ou des barres de favoris, il est possible que l'utilisateur obtienne une icône adaptée au thème (clair ou sombre) en raison des styles de préférence sombre fournis dans le SVG. Le SVG s'adapte ensuite en utilisant son style intégré pour les préférences utilisateur claires et sombres.

Exemples de favicons clairs et sombres, grands et faciles à distinguer.

Onglets clairs et sombres dans chaque navigateur, offrant un aperçu de l'icône adaptative de haut en bas : Safari, Firefox, Chrome.
Onglets clairs et sombres dans chaque navigateur, offrant un aperçu de l'icône adaptative de haut en bas : Safari, Firefox, Chrome.

Annoter

Le balisage SVG est XML et utilise une extension de type de fichier .svg, ce qui lui permet de contenir des types de code plus dynamiques.

Commencez par créer favicon.svg

Créez un fichier nommé favicon.svg et ajoutez-y les éléments suivants :

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400">

</svg>

Voici mon fichier SVG. J'ai dimensionné viewBox en fonction de mon illustration :

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">

</svg>

Ajouter des formes et des chemins

Ajoutez ensuite le code du chemin SVG. Cela signifie souvent ouvrir le fichier SVG dans un éditeur de code, mais ce code n'est généralement pas facile à lire. Voici un guide très utile qui vous explique comment exporter et optimiser les SVG à partir d'outils de conception.

L'illustration de ce défi d'IUG a été créée par un concepteur dans Adobe Illustrator. Je l'ai fortement optimisé. Je l'ai exécuté dans SVGOMG, puis j'ai supprimé manuellement les éléments inutiles.

Voici un exemple de groupe de chemins d'accès aux illustrations skull de mon compte, après nettoyage :

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <g id="skull">
    <path id="skull-outline" class="favicon-stroke" stroke-linejoin="round" d="M19.62 188.39A166.62 166.62 0 0 1 186.24 21.77c115.25 0 166.61 74.59 166.61 166.62 0 1.83-.08 3.64-.13 5.46h.13s.68 175.09.68 178.65c0 30.11-16.26 41.67-36.32 41.67-12.7 0-35.22-3.93-36.22-32.69h-.2c-1 28.76-16.81 32.69-36.22 32.69-18 0-32.87-6.78-35.77-32.53-2.9 25.75-17.8 32.53-35.8 32.53-20.06 0-36.32-11.56-36.32-41.67 0-2.48.36-24.88.36-24.88A166.68 166.68 0 0 1 19.62 188.39Z" />
    <path id="eyes-and-nose" d="M180.77 205.76c0 23.64 12.84 42.81 28.68 42.81s28.68-19.17 28.68-42.81-12.84-42.82-28.68-42.82-28.68 19.17-28.68 42.82M275 205.76c0 23.64 12.84 42.81 28.68 42.81s28.68-19.17 28.68-42.81-12.84-42.82-28.68-42.82S275 182.11 275 205.76M264.51 276.85s-29.26 43.53-20.12 49.23c7.07 4.41 20.49-16.71 20.49-16.71s12.82 22.58 16.76 20c16.24-10.71-17.13-52.5-17.13-52.5"/>
    <path id="jawline" class="favicon-stroke" fill="none" stroke-linecap="round" d="M114.92 284.33c22.54-1 22 7 22 62.48" />
  </g>
</svg>

Notez les sélecteurs d'ID lisibles par l'humain, comme #eyes-and-nose, et les classes, comme .favicon-stroke. Il s'agit de modifications manuelles que j'ai apportées en vue de la publication dans CSS. Il n'est pas nécessaire d'ajouter des classes et des ID pour que votre SVG soit une favicon adaptative.

Dans la balise <head> de votre code HTML, après l'icône favicon .ico, ajoutez ce qui suit :

<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">

Comme la nouvelle icône peut être identique à la version .ico, vérifiez qu'elle est utilisée. Ouvrez le panneau "Réseau" des outils de développement. Filtrez par images et recherchez le favicon :

Capture d&#39;écran du volet &quot;Réseau&quot; de DevTools avec un filtre de recherche de favicon et la ressource favicon.svg mise en évidence.

Styles

Comme pour le HTML, vous pouvez ajouter une balise <style> au balisage pour l'utiliser dans le champ d'application du document :

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <style>
    
  </style>
  …
</svg>

La version du thème clair sera la couleur par défaut de mon fichier SVG favicon. Les styles que j'ai écrits pour cela étaient principalement des couleurs de trait et de remplissage :

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <style>
    .favicon-stroke {
      stroke-width: 8px;
      stroke: #8929ff;
    }
    #skull-outline { fill: white }
    #eyes-and-nose, #hat-outline { fill: #8929ff }
    #hat-fill, #hat-bill { fill: #e662e6 }
  </style>
  
</svg>

Exemple d&#39;aperçu de favicon avec le thème clair.

Ensuite, passons à la partie la plus amusante : styliser la version du thème sombre de votre favicon. Les styles correspondants seront placés dans une requête média au sein de la balise de style :

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <style>
    
    @media (prefers-color-scheme: dark) {
      /* dark theme styles */
    }
  </style>
  
</svg>

Capture d&#39;écran des outils de développement montrant la requête média du thème sombre qui remplace la couleur de remplissage des yeux et du nez du SVG.

Voici le résultat que j'ai obtenu :

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <style>
    
    @media (prefers-color-scheme: dark) {
      .favicon-stroke { stroke: #343a40 }
      #skull-outline { fill: #adb5bd }
      #hat-outline { fill: #343a40 }
      #eyes-and-nose { fill: #343a40 }
    }
  </style>
  
</svg>

Exemple d&#39;aperçu de favicon avec le thème sombre.

J'ai choisi de remplacer les bordures violet vif par un gris foncé froid (#343a40), j'ai changé la couleur de l'os du crâne, passant du blanc à un gris clair froid (#adb5bd), mais j'ai conservé le chapeau rose.

Aperçu des favicons claires et sombres côte à côte.

Conclusion

Maintenant que vous savez comment j'ai fait, comment feriez-vous ? 🙂

Diversifions nos approches et découvrons toutes les façons de créer sur le Web. Créez une démo, tweetez-moi les liens et je l'ajouterai à la section des remix de la communauté ci-dessous !

Remix de la communauté