Configuration du favicon et de l'identité du navigateur
Balises favicon, icône Apple touch, manifeste web et theme-color pilotées par la configuration et émises sur chaque page, avec un repli /favicon.ico sans configuration.
Favicon et identité du navigateur
Le thème émet les balises d’identité du navigateur — favicon, icône SVG évolutive, icône Apple touch, manifeste web et theme-color — depuis _includes/core/favicon.html, inclus dans l’en-tête du document sur chaque page.
Pourquoi les balises explicites sont importantes
Avant l’existence de cet include, les sites s’appuyaient sur la sonde implicite /favicon.ico du navigateur. Cela échoue silencieusement de trois façons :
- Un site sans
favicon.icoracine affiche le globe générique du navigateur et enregistre une erreur 404 à chaque visite. - Les déploiements de pages projet avec un
baseurlne résolvent jamais/favicon.icoà la racine du domaine. - Il n’y a aucun moyen de fournir implicitement une icône SVG, une icône d’écran d’accueil iOS ou un manifeste PWA.
Comportement sans configuration
Sans aucune configuration, chaque page référence /favicon.ico explicitement (résolu via relative_url, de sorte que les sites baseurl fonctionnent) et émet les deux balises theme-color :
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#212529">
Ces valeurs par défaut sont les propres --bs-body-bg de Bootstrap 5.3.3 pour chaque schéma, de sorte que la barre d’adresse mobile correspond à la surface de la page dès le départ. Cela compte surtout pour les consommateurs remote_theme, qui n’héritent pas du _config.yml du thème — avant ce changement, la balise était conditionnée par la configuration, si bien qu’un tel site n’en obtenait aucune.
Conservez un favicon.ico à la racine de votre site — une icône 32×32 suffit.
Configuration complète
Toutes les clés sont facultatives. Ajoutez un bloc favicon: à _config.yml :
favicon:
ico : /favicon.ico # legacy .ico (default)
svg : /assets/images/favicon.svg # scalable icon, preferred by modern browsers
png : /assets/images/favicon-32.png # PNG icon
png_size : 32x32 # sizes attribute for the png entry
apple_touch : /assets/images/apple-touch.png # iOS home-screen icon (180×180 or larger)
manifest : /site.webmanifest # PWA manifest
theme_color : "#0d1117" # pin ONE chrome color for both schemes
theme_color_light : "#ffffff" # light-scheme chrome (default: #ffffff)
theme_color_dark : "#212529" # dark-scheme chrome (default: #212529)
Ce qui produit :
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" type="image/svg+xml" href="/assets/images/favicon.svg">
<link rel="icon" type="image/png" href="/assets/images/favicon-32.png" sizes="32x32">
<link rel="apple-touch-icon" href="/assets/images/apple-touch.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#0d1117">
theme_color fixe une seule couleur pour les deux schémas, il l’emporte donc sur la paire. Omettez-le pour obtenir les valeurs par défaut sensibles au schéma présentées ci-dessus (ou vos propres theme_color_light / theme_color_dark).
Quelle forme est émise
media="(prefers-color-scheme: …)" dépend du réglage du système d’exploitation, la paire n’est donc correcte que lorsque le site suit le système :
| votre configuration | émis |
|---|---|
color_mode_default: auto (par défaut) |
les deux balises, une par schéma |
color_mode_default: dark ou light |
une balise inconditionnelle pour cette surface |
color_mode_lock: true |
une balise inconditionnelle pour la surface fixée (auto se résout en sombre) |
favicon.theme_color défini |
une balise inconditionnelle avec votre valeur |
Un site fixé obtient une seule balise à dessein : une paire média fournirait un habillage clair au navigateur d’un visiteur en système clair regardant une page que le site rend en sombre.
Note. Sur un site déverrouillé, un visiteur peut remplacer le mode depuis le panneau Apparence, et aucune méta statique ne peut suivre cela. Maintenir l’habillage synchronisé avec le panneau nécessite un hook d’exécution dans le chemin du bascule.
Recommandations
- Le SVG d’abord. Une icône SVG carrée reste nette à toutes les tailles et peut honorer
prefers-color-scheme. Conservez le.icocomme repli hérité. - Réutilisez votre marque. Si votre
logoest déjà un SVG carré, faites pointerfavicon.svgvers le même fichier. - Les icônes Apple touch ne se réduisent pas bien depuis de petites sources. Utilisez au moins un PNG 180×180.
- Consommateurs de thème distant : cet include est fourni avec le thème — vous ne portez que les assets d’icônes et le bloc facultatif
favicon:dans votre propre dépôt.
Vérifier
L’intérêt de ces balises est que vous ne pouvez pas en voir la plupart, alors vérifiez-les plutôt que de supposer :
- Les icônes se résolvent. Ouvrez les DevTools de votre navigateur → Réseau, rechargez et filtrez sur
favicon. Chaque entrée doit être200, pas404. Sur un déploiement de page projet (baseurl), c’est la vérification qui compte — une sonde racine implicite renverrait une 404 ici. - Les deux balises
theme-colorsont présentes. Dans les DevTools du navigateur → Éléments, cherchez<head>pourtheme-color. Un siteautodevrait en afficher deux, une parprefers-color-scheme; un site fixé, une. Si vous en voyez zéro, vous êtes sur un build antérieur à ce correctif. - La valeur est la surface, pas l’accent. Le
contentdoit correspondre à l’arrière-plan de la page, pas à votre couleur de lien.#007bffapparaissant ici signifie que quelque chose résout encoretheme_color.main. - L’habillage suit réellement. Sur Chrome Android, chargez la page et basculez le système entre clair et sombre — la barre d’adresse et la carte du sélecteur de tâches devraient suivre. iOS Safari l’applique à la zone de la barre d’état.
Dépannage
| Problème | Solution |
|---|---|
Le changement de theme-color n’apparaît pas après un déploiement |
Les navigateurs mettent fortement cette balise en cache. Effectuez un rechargement forcé, ou vérifiez dans une fenêtre privée avant de supposer que le build est erroné. |
| La barre d’adresse reste claire sur une page sombre | Le visiteur a remplacé le mode dans le panneau Apparence ; media suit le système d’exploitation, pas ce panneau. Comportement attendu — voir la note ci-dessus. Pour forcer une correspondance sur tout le site, définissez color_mode_lock: true. |
| La barre d’adresse est votre couleur de marque | favicon.theme_color est défini et fixe une seule valeur pour les deux schémas. Supprimez-le pour obtenir la paire sensible au schéma. |
Aucun theme-color du tout |
Vous utilisez une version antérieure à cette correction, où la balise était conditionnée par la configuration et un consommateur qui ne déclarait aucun theme_color n’en obtenait aucun. |
| Icône Apple touch manquante sur l’écran d’accueil iOS | iOS ne suivra pas de redirection pour cette image. Vérifiez que favicon.apple_touch se résout directement sous votre baseurl. |
favicon.theme_color_light ne se résout à rien |
Le code hexadécimal n’est pas entre guillemets, donc YAML a lu #ffffff comme un commentaire. Mettez-le entre guillemets. |
Voir aussi
- Liste de contrôle du consommateur de thème distant — ce qu’un site
remote_themedoit déclarer pour lui-même, y compris les ressources d’icônes et le blocfavicon:optionnel - Fonctionnalités — index de toutes les fonctionnalités du thème