Varianta dark:

Spousta lidí si v telefonu nebo v počítači zapíná tmavý režim: všude tmavé pozadí a světlý text. V tmavé místnosti je šetrnější k očím a mnoha lidem se prostě líbí víc. Tmavou verzi má čím dál víc webů a v této lekci ji dostane i web našeho útulku.

Najděte si nového nejlepšího přítele
Naše kočky čekají na milující domov. Přijďte se s nimi seznámit!
Najděte si nového nejlepšího přítele
Naše kočky čekají na milující domov. Přijďte se s nimi seznámit!

Připravili jsme menší verzi domovské stránky: záhlaví, hlavní nadpis, tři kočky a zápatí. Je upravená třídami z předchozích lekcí a zatím je jen světlá. Na konci lekce bude mít i tmavou verzi a tlačítko, které mezi nimi přepíná.

Pro tmavý režim má Tailwind variantu dark:. Funguje stejně jako hover: nebo md:. Třída s touto předponou platí jen v tmavém režimu. Dvojice tříd tak prvku dá pro každý režim jednu barvu:

<body class="bg-stone-50 dark:bg-stone-900">

Ve světlém režimu je stránka skoro bílá (bg-stone-50). V tmavém platí obě třídy a vyhraje dark:bg-stone-900: Tailwind řadí pravidla variant až za pravidla obyčejných tříd a ze dvou stejně specifických pravidel vyhraje to pozdější (to znáte z kaskády v kurzu CSS).

Jak prohlížeč pozná, který režim je zapnutý? Návštěvník si ho vybere v nastavení svého operačního systému a stránka se na něj může zeptat pravidlem @media. Tailwind ve výchozím stavu zabalí CSS tříd s dark: právě do takového pravidla, stejně jako u md:. Toto pravidlo se ale neptá na šířku, nýbrž na nastavení systému:

@media (prefers-color-scheme: dark) {
	.dark\:bg-stone-900 {
		background-color: oklch(21.6% 0.006 56.043);
	}
}

(Zpětné lomítko před dvojtečkou už znáte: dvojtečka patří k názvu třídy.)

To často stačí. Spousta webů ale návštěvníkům dovolí vybrat si režim tlačítkem, ať je systém nastavený jakkoli, a nastavení systému stránka změnit nemůže. Proto weby s přepínačem zapínají tmavý režim třídou: tmavý režim platí, když má prvek <html> třídu dark. Skript pak jen tuto třídu přidá nebo odebere. My to uděláme stejně. Až budete na stránce pracovat, tmavý režim zapnete a vypnete tak, že napíšete nebo smažete jedinou třídu, a nastavení počítače měnit nemusíte.

Tailwindu to řeknete tímto řádkem v style.css, hned za importem:

@import "tailwindcss";
@custom-variant dark (&:where(.dark, .dark *));

@custom-variant (vlastní varianta) definuje variantu, tady novou podobu varianty dark. V závorce je selektor, který varianta přidá: & zastupuje prvek, kterému dáte třídu s dark:, a :where(.dark, .dark *) znamená „který má třídu dark sám, nebo je uvnitř prvku, který ji má“ (.dark * je selektor potomků, jak ho znáte z kurzu CSS). Z třídy dark:bg-stone-900 pak vznikne toto pravidlo:

.dark\:bg-stone-900:where(.dark, .dark *) {
	background-color: oklch(21.6% 0.006 56.043);
}

Všechny prvky stránky jsou uvnitř <html>, takže class="dark" na něm zapne tmavý režim pro celou stránku. Řádek se nemusíte učit nazpaměť: najdete ho v dokumentaci Tailwindu (hledejte „dark mode“).

Samotná třída dark vzhled nijak nemění: je to jen signál pro třídy s dark:. A pozor na překlepy: s class="drak" se nestane nic a žádná chyba se neobjeví.

Pokyny

Do souboru style.css přidejte za import řádek @custom-variant dark (&:where(.dark, .dark *));. V náhledu se zatím nic nezmění: žádný prvek ještě nemá třídu s dark:.

Přidejte prvku body třídy dark:bg-stone-900 dark:text-stone-100 (velmi tmavé pozadí a velmi světlý text). Stránka je pořád světlá: tmavý režim není zapnutý.

Zapněte tmavý režim: dejte prvku html třídu dark (<html lang="cs" class="dark">). Stránka ztmavne. Záhlaví a karty ale zůstanou bílé a odkazy v záhlaví i jména koček zmizí: zdědí světlý text od body. To spravíme v dalším cvičení.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

1/5