Favicon v tmavém režimu pomocí SVG

Autor:

Černé logo na průhledném pozadí vypadá skvěle na světlé kartě a na tmavé je neviditelné. ICO se přizpůsobit neumí, ale SVG favicon ano: obsahuje CSS pravidlo měnící barvy podle motivu prohlížeče.

Stejný symbol viditelný na světlé i tmavé kartě
SVG může přizpůsobit barvy bez JavaScriptu pomocí prefers-color-scheme.

Problém: jeden soubor, dvě pozadí

Prohlížeče se řídí systémovým motivem, takže dva návštěvníci stejné stránky mohou mít lištu karet téměř bílou nebo téměř černou. Jednobarevná favicon navržená pro jeden motiv je ve druhém nečitelná.

Mnoho webů problém obchází přidáním neprůhledného barevného pozadí. Funguje to, ale ikona pak působí jako těžkopádný barevný terč, zatímco velké značky používají samotný symbol bez pozadí.

Správným řešením je nechat výběr na prohlížeči. Jde to bez JavaScriptu i detekce na serveru.

Jak funguje přizpůsobivé SVG

Soubor SVG je dokument, ne pevný obrázek: může obsahovat značku style, a tedy i mediální dotazy. Pravidlem prefers-color-scheme: dark v něm předefinujete barvu výplně křivek pro tmavý motiv prohlížeče.

SVG konkrétně definuje výchozí barvu pro světlý motiv a pravidlo, které ji v tmavém motivu nahradí. Prohlížeč při vykreslení použije správnou variantu a při přepnutí motivu návštěvníkem kartu okamžitě aktualizuje.

Stejným mechanismem lze provést víc než jen invertovat barvy: můžete zobrazit zcela odlišnou kresbu, například samostatný symbol ve světlém režimu a plnou barevnou ikonu v tmavém.

Deklarujte SVG vedle .ico

SVG deklarujete pomocí link rel="icon" type="image/svg+xml" href="/favicon.svg". Prohlížeče, které ho podporují, mu dají přednost, ostatní použijí favicon.ico z kořenového adresáře.

Nemusíte tedy nic mazat: oba soubory fungují společně a vzájemně pokrývají různé klienty. Jde o princip postupného vylepšování použitý na ikonu o velikosti 32 pixelů.

Pozor na jednu věc: SVG favicon musí být samostatná. Externí písmo, vzdálený obrázek ani skript se v tomto kontextu nenačtou. Text musíte převést na křivky.

Na co se tmavý režim nevztahuje

Tmavá varianta se týká favicon v desktopových prohlížečích. Neplatí pro ikonu Apple Touch, která je pevným neprůhledným PNG, ani pro ikony webového manifestu, které Android zobrazuje na vlastním pozadí.

Ani podpora není univerzální: prohlížeče založené na Chromiu a Firefox přizpůsobivé SVG čtou, Safari podle verze zaostává. To nevadí, protože automaticky nastoupí záložní .ico.

Světlou ikonu proto navrhněte jako výchozí variantu pro všechny návštěvníky a tmavou berte jako vylepšení pro ty, jejichž prohlížeč ji podporuje.

Primární zdroje

Časté otázky

Umí favicon.ico tmavý režim?

Ne. ICO ukládá pevné rastrové obrázky bez podpory motivů. Mediální dotaz může obsahovat jen SVG, proto moderní sada obsahuje oba formáty.

Potřebuji dva soubory SVG, světlý a tmavý?

Ne, stačí jediný soubor. Obě varianty jsou v jednom SVG, oddělené mediálním dotazem prefers-color-scheme. Odpadá další požadavek i kód pro detekci motivu.

Jak otestovat vzhled v tmavém motivu?

Přepněte motiv operačního systému a znovu načtěte kartu. Generátor zobrazuje náhledy světlé a tmavé karty vedle sebe, takže mezi nimi nemusíte přepínat.

Vyzkoušejte si to

Generátor vytvoří kompletní sadu během několika sekund, zdarma a bez odesílání vašich obrázků.

Vytvořit favicon s tmavou variantou

Co si přečíst a vyzkoušet dál

Další nástroje LFFavicon a návody s odpověďmi na nejčastější otázky.

Nástroje

Návody