- Vrealmatic
- Webové služby
- Tailwind CSS
Tailwind CSS v4
Instalace pro Express i Next.js, vlastní design a rozdělení CSS - krok za krokem
Praktický návod pro Tailwind 4 ve dvou prostředích: Express (Tailwind CLI) a Next.js (PostCSS). Od instalace přes vlastní barvy a fonty až po samostatné CSS pro web, administraci nebo jednotlivé stránky - včetně postupu, který používáme na tomto webu. Příkazy a soubory zkopírujete jedním kliknutím.
Obsah návodu
00 · Přehled
Tailwind CSS v kostce
Tailwind CSS vygeneruje z tříd, které napíšete do šablon nebo komponent (class="p-4 bg-white rounded-xl"), jeden malý CSS soubor - jen s tím, co web opravdu používá. Ve verzi 4 na to stačí jeden řádek CSS, bez konfiguračního souboru. Liší se jen to, kdo CSS sestaví: v Express samostatný nástroj CLI, v Next.js samotný framework.
Kterou integraci zvolit
| Projekt | Integrace | Balíčky |
|---|---|---|
| Express, PHP, statické HTML, Django… (bez bundleru) | Tailwind CLI | tailwindcss @tailwindcss/cli |
| Next.js | PostCSS | tailwindcss @tailwindcss/postcss postcss |
| Vite, Astro, SvelteKit, Nuxt… | Vite plugin | tailwindcss @tailwindcss/vite |
Vstupní CSS, vlastní design (@theme, @utility) i výběr zdrojů přes @source fungují ve všech integracích stejně. Kde se postup liší (instalace, build, rozdělení CSS), přepnete si v záložkách mezi Express a Next.js - volba platí pro celý návod.
Celý postup ve zkratce
- Nainstalujte balíčky - podle integrace v tabulce výše
- Vytvořte vstupní CSS - soubor s řádkem
@import "tailwindcss"; - Napojte build - Express: skripty s CLI v
package.json· Next.js:postcss.config.mjs - Načtěte CSS - Express:
<link>v layoutu · Next.js:import "./globals.css"vapp/layout.tsx
Co řešíte?
| Otázka | Kde najdete odpověď |
|---|---|
| Co se ve v4 změnilo oproti v3? | Jak Tailwind v4 funguje → |
| Mám Express (nebo jiný server bez bundleru). | Instalace pro Express → |
| Mám Next.js. | Instalace pro Next.js → |
| Jak spustit vývoj a produkční build? | Build a nasazení → |
| Chci vlastní barvy, fonty nebo komponenty (tlačítka). | Vlastní design → |
| Web a administrace mají mít každý vlastní CSS. | Rozdělení CSS → |
| Jedna stránka potřebuje hodně vlastních stylů (Next.js). | Styly jen pro jednu stránku → |
| Třída v šabloně se neprojevuje. | Řešení problémů → |
Tailwind CSS 4.x (ověřeno na řadě 4.3), Node.js 20 nebo novější. Příklady: Express 5 s Handlebars a Next.js 15+ s App Routerem. Postup pro Express platí stejně pro PHP, Twig nebo statické HTML.
01 · Princip
Jak Tailwind v4 funguje
Tailwind projde soubory projektu, najde v nich názvy tříd a pro každou použitou třídu vygeneruje CSS pravidlo. Nepoužité třídy ve výsledném souboru nejsou, takže i velký web má typicky jen desítky kB CSS.
Co je ve v4 jinak než ve v3
Pokud znáte Tailwind 3, většina starých návodů už neplatí. Nejdůležitější změny:
| Tailwind 3 | Tailwind 4 | |
|---|---|---|
| Vstupní CSS | @tailwind base; @tailwind components; @tailwind utilities; | @import "tailwindcss"; |
| Konfigurace | tailwind.config.js | přímo v CSS: @theme, @utility, @source |
| Které soubory se prohledají | ručně v poli content | automaticky celý projekt (kromě .gitignore a node_modules), upřesnění přes @source |
| CLI | npx tailwindcss (součást balíčku) | samostatný balíček @tailwindcss/cli |
| PostCSS plugin | tailwindcss + autoprefixer | @tailwindcss/postcss (prefixy a importy řeší sám) |
| Inicializace | npx tailwindcss init | není potřeba (příkaz neexistuje) |
| Safelist (vždy vygenerovat) | pole safelist | @source inline("…") |
| Pluginy | pole plugins v configu | @plugin "@tailwindcss/typography"; |
Tailwind 4 stojí na moderním CSS (kaskádové vrstvy, @property, color-mix()) a vyžaduje Safari 16.4+, Chrome 111+ a Firefox 128+. Pokud musíte podporovat starší prohlížeče, zůstaňte u Tailwind 3.4.
Přechod existujícího projektu z v3
Většinu práce udělá oficiální nástroj - převede závislosti, vstupní CSS, konfiguraci i PostCSS a upraví přejmenované třídy v šablonách. Spusťte ho v nové větvi a výsledek zkontrolujte:
npx @tailwindcss/upgrade- Ve v4 se vše nastavuje v CSS,
tailwind.config.jsaniinitnepotřebujete. - Výsledné CSS obsahuje jen třídy, které Tailwind v souborech skutečně našel.
- Návody pro v3 (
@tailwind base, polecontent,tailwindcssjako PostCSS plugin) ve v4 nefungují.
02 · Instalace
Instalace krok za krokem
Vyberte své prostředí. Volba se zapamatuje a přepne i záložky v kapitolách Build a Rozdělení CSS.
Kde není bundler, sestaví CSS samostatný nástroj Tailwind CLI a výsledek uloží jako obyčejný soubor do public/. Čtyři kroky pro Node.js aplikaci s Express a Handlebars - stejně to funguje pro PHP, Twig nebo statické HTML.
Předpoklady
- Node.js 20 nebo novější (doporučujeme aktuální LTS)
express5 (npm install express)express-handlebars8 (npm install express-handlebars)
Příklady počítají s touto strukturou projektu (složky si můžete pojmenovat jinak, jen pak upravte cesty v příkazech):
muj-projekt/
├── app.js
├── package.json
├── src/
│ └── input.css ← vstup pro Tailwind (píšete vy)
├── public/
│ └── css/style.css ← výstup (generuje Tailwind, needitovat)
└── views/
├── layouts/main.hbs
├── partials/
└── home.hbsKrok 1: Nainstalujte Tailwind a CLI
V kořenové složce projektu:
npm install -D tailwindcss @tailwindcss/cli-D uloží balíčky jako vývojové závislosti - CSS se sestaví předem a na serveru je potřeba jen hotový soubor. Pokud build spouštíte až na serveru po npm ci --omit=dev, instalujte bez -D.
Krok 2: Vytvořte vstupní CSS soubor
Soubor src/input.css s jediným řádkem:
@import "tailwindcss";Víc není potřeba. Tailwind sám prohledá šablony a skripty v projektu (.hbs, .html, .js…) a vynechá soubory z .gitignore a node_modules. Vlastní barvy a fonty se přidávají sem do CSS - viz Vlastní design.
Krok 3: Přidejte skripty do package.json
Do sekce scripts vložte příkaz pro vývoj a pro produkční build:
"scripts": {
"dev:css": "npx @tailwindcss/cli -i ./src/input.css -o ./public/css/style.css --watch",
"build:css": "npx @tailwindcss/cli -i ./src/input.css -o ./public/css/style.css --minify"
}-i je vstupní soubor, -o výstupní. --watch nechá proces běžet a přegeneruje CSS při každé změně, --minify výsledek zmenší pro produkci.
Krok 4: Připojte vygenerované CSS
Express musí složku public servírovat jako statické soubory a layout na CSS odkázat:
app.use(express.static("public"));<head>
<meta charset="utf-8">
<link rel="stylesheet" href="/css/style.css">
</head>Teď můžete v šablonách psát třídy, např. <h1 class="text-3xl font-bold text-green-700">, a po spuštění npm run dev:css se projeví (viz Build a nasazení).
V Next.js se Tailwind napojuje přes PostCSS a CSS sestavuje sám framework - žádné skripty, žádný výstupní soubor v public/. Nový projekt z create-next-app má Tailwind nastavený rovnou.
Nový projekt
npx create-next-app@latest muj-webPrůvodce se zeptá, jestli chcete Tailwind CSS - stačí potvrdit a vše níže je hotové. Do existujícího projektu ho přidáte ve třech krocích:
Krok 1: Nainstalujte Tailwind a PostCSS plugin
npm install tailwindcss @tailwindcss/postcss postcssKrok 2: Zapněte plugin v PostCSS
V kořeni projektu vytvořte (nebo upravte) postcss.config.mjs:
const config = {
plugins: {
"@tailwindcss/postcss": {},
},
};
export default config;autoprefixer ani postcss-import už nepotřebujete - plugin ve v4 řeší prefixy i importy sám. Pokud je v configu ještě tailwindcss: {} z verze 3, nahraďte ho.
Krok 3: Vytvořte globální CSS a načtěte ho v kořenovém layoutu
@import "tailwindcss";import "./globals.css";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="cs">
<body>{children}</body>
</html>
);
}Spusťte npm run dev a třídy pište přímo do JSX: <h1 className="text-3xl font-bold">. Používáte-li složku src/, cesty jsou src/app/….
Next.js zpracuje CSS při next dev i next build (s Turbopackem i Webpackem), v produkci ho minifikuje a rozdělí podle rout. Automatická detekce prohledá celý projekt; složka .next je v .gitignore, takže ji vynechá.
- Next.js =
@tailwindcss/postcss+ jeden řádek vapp/globals.css. - Žádné build skripty - o CSS se stará
next devanext build. - Globální CSS importujte v kořenovém layoutu, ne v jednotlivých komponentách.
03 · Build
Build a nasazení
Při vývoji se CSS přegenerovává samo po každé změně, před nasazením vznikne minifikovaná verze. V Express to řídí vaše skripty, v Next.js běžné příkazy frameworku.
| Příkaz | Co dělá | |
|---|---|---|
| Vývoj | npm run dev:css | Sestaví CSS a dál sleduje změny v šablonách. Ukončíte ho Ctrl+C. |
| Produkce | npm run build:css | Sestaví jednou, minifikovaně. Spouští se před nasazením nebo v CI. |
Tailwind hledá šablony od složky, ze které příkaz spouštíte. Když CLI spustíte odjinud, výsledné CSS bude skoro prázdné (viz Řešení problémů).
CSS a server zároveň
dev:css běží trvale, takže server spusťte ve druhém terminálu (node --watch app.js). Pokud chcete obojí jedním příkazem, použijte run-p z balíčku npm-run-all2 - viz Build všeho najednou.
| Příkaz | Co dělá | |
|---|---|---|
| Vývoj | npm run dev | CSS se přegeneruje automaticky spolu se stránkou. |
| Produkce | npm run build | Next.js CSS minifikuje a rozdělí podle rout. |
Žádné další skripty ani výstupní soubor - CSS je součástí buildu aplikace. Při nasazení (Vercel, Cloudflare přes OpenNext, vlastní server) se sestaví spolu s ní.
Výchozí nastavení vytvoří jeden globální CSS soubor pro všechny stránky. To je pro většinu webů správná volba: soubor je malý a prohlížeč ho stáhne jen jednou. Pokud máte části s úplně jiným vzhledem nebo stránky s rozsáhlými vlastními styly, můžete CSS rozdělit.
- Express:
dev:csspři práci,build:csspřed nasazením. - Next.js: nic navíc, stačí
npm run devanpm run build. - Vygenerovaný soubor v
public/css/needitujte ručně - při dalším buildu se přepíše.
04 · Vlastní design
Vlastní barvy, fonty a komponenty
Barvy, fonty, breakpointy i opakovaně používané komponenty se ve v4 definují přímo ve vstupním CSS (src/input.css v Express, app/globals.css v Next.js). Tailwind z nich automaticky vytvoří třídy, které fungují se všemi variantami (hover:, md:, dark:…).
Barvy, fonty a breakpointy: @theme
Každá proměnná v bloku @theme přidá sadu tříd. Z --color-brand vznikne bg-brand, text-brand, border-brand atd., z --font-display třída font-display, z --breakpoint-3xl varianta 3xl:.
@import "tailwindcss";
@theme {
--color-brand: #00a94f;
--color-brand-dark: #0f2a1d;
--font-display: "Inter", sans-serif;
--breakpoint-3xl: 120rem;
}Next.js: fonty z next/font
next/font stáhne písmo při buildu a hostuje ho sám. Font zpřístupníte jako CSS proměnnou na <html> a v CSS ho napojíte na třídu font-sans:
import { Inter } from "next/font/google";
import "./globals.css";
const inter = Inter({ subsets: ["latin", "latin-ext"], variable: "--font-inter" });
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="cs" className={inter.variable}>
<body className="font-sans">{children}</body>
</html>
);
}@theme inline {
--font-sans: var(--font-inter);
}inline je tu důležité: proměnnou --font-inter nastavuje next/font až na elementu <html>, takže třída musí odkazovat přímo na ni. Pro češtinu nezapomeňte na latin-ext.
Opakovaně používané styly: @utility
Když se stejná kombinace tříd opakuje (tlačítka, štítky), vytvořte z ní vlastní třídu direktivou @utility. Funguje i s variantami, takže můžete psát md:btn-primary. Uvnitř lze použít @apply s běžnými třídami Tailwindu i proměnné z @theme. V Next.js (React) je často přirozenější udělat z opakovaného prvku komponentu - @utility se hodí hlavně pro šablony bez komponent.
@utility btn-primary {
@apply inline-flex items-center rounded-lg px-4 py-2 font-semibold text-white;
background-color: var(--color-brand);
}Pro složitější komponenty, kde varianty nepotřebujete, můžete použít klasické CSS třídy v @layer components { … }. Běžné třídy Tailwindu je v HTML vždy přebijí.
Tmavý režim přepínaný třídou
Varianta dark: se ve výchozím stavu řídí nastavením systému. Pokud chcete režim přepínat tlačítkem (třídou dark na <html>), přepište variantu:
@custom-variant dark (&:where(.dark, .dark *));- Design tokeny patří do
@theme- třídy z nich vzniknou samy. - Proměnné z next/font napojte přes
@theme inline. - Opakované kombinace tříd uložte jako
@utility, v Reactu raději jako komponentu.
05 · Rozdělení CSS
Samostatné CSS pro části webu a stránky
Jeden CSS soubor stačí většině webů. Rozdělení má smysl, když mají části webu odlišný vzhled (typicky veřejný web a administrace), nebo když jednotlivé stránky potřebují rozsáhlé vlastní styly, které nechcete posílat na všechny ostatní stránky.
Princip: co se vygeneruje a kde se to načte
- Které třídy se vygenerují - automatická detekce prohledává celý projekt, takže by každý soubor obsahoval třídy ze všech šablon.
source(none)ji vypne a@sourceurčí, které složky se mají prohledat (cesty relativně k CSS souboru). Funguje to stejně v CLI, PostCSS i Vite. - Kde se soubor načte - to řeší prostředí: v Express odkaz v layoutu, v Next.js import v layoutu skupiny rout nebo
<link>v komponentě stránky.
Které řešení zvolit
| Situace | Řešení |
|---|---|
| Malý a střední web s jednotným vzhledem | Jeden soubor (výchozí stav), nic neměnit |
| Web × administrace v Express, PHP… | Více vstupů pro CLI (source(none) + @source) |
| Web × administrace v Next.js | Skupiny rout s vlastním kořenovým layoutem a vlastním CSS |
| Stránky s rozsáhlými vlastními styly (Next.js) | Čisté CSS v public/ + <link precedence> |
| Složka, jejíž třídy nechcete v CSS (ukázky, archiv) | @source not "../slozka"; |
Web × administrace: samostatný vstup pro každou část
Krok 1: Vytvořte vstupní CSS pro každou část
@import "tailwindcss" source(none);
@source "../../views/web";
@source "../../views/layouts";
@source "../../views/partials";@import "tailwindcss" source(none);
@source "../../views/admin";
@source "../../views/partials";Sdílené šablony (layouty, partials) přidejte do každého souboru, který je používá. Společný @theme můžete dát do samostatného souboru (např. src/theme.css) a do obou vstupů ho načíst přes @import "../theme.css";.
Krok 2: Přidejte skripty pro každou část
Pro každou část jeden příkaz pro vývoj a jeden pro produkci:
"scripts": {
"dev:web": "npx @tailwindcss/cli -i ./src/input/web.css -o ./public/css/web.css --watch",
"dev:admin": "npx @tailwindcss/cli -i ./src/input/admin.css -o ./public/css/admin.css --watch",
"build:web": "npx @tailwindcss/cli -i ./src/input/web.css -o ./public/css/web.css --minify",
"build:admin": "npx @tailwindcss/cli -i ./src/input/admin.css -o ./public/css/admin.css --minify",
"dev": "run-p dev:web dev:admin",
"build": "run-p build:web build:admin"
}Krok 3: Spouštějte všechny části najednou
Skripty dev a build výše používají run-p (paralelní běh) z balíčku npm-run-all2 - udržovaného nástupce původního npm-run-all se stejnými příkazy. Nainstalujte ho:
npm install -D npm-run-all2Pak stačí npm run dev při vývoji a npm run build před nasazením. Do dev můžete přidat i server, např. "dev": "run-p dev:web dev:admin server".
Krok 4: Připojte v každé části její CSS
Web odkazuje na /css/web.css, administrace na /css/admin.css. S express-handlebars to nejjednodušeji vyřešíte dvěma layouty (main.hbs a admin.hbs) a v routách administrace res.render("admin/dashboard", { layout: "admin" }).
Web × administrace: vlastní CSS pro každou skupinu rout
V App Routeru dejte každé části vlastní kořenový layout ve skupině rout (složka v závorkách, která se do URL nepromítne) a každý layout ať importuje svůj CSS. Next.js CSS rozdělí podle rout, takže návštěvník webu nestahuje styly administrace.
app/
├── (web)/
│ ├── layout.tsx ← import "./web.css"
│ ├── web.css
│ └── page.tsx
└── (admin)/
├── layout.tsx ← import "./admin.css"
├── admin.css
└── admin/page.tsx@import "tailwindcss" source(none);
@source "./";
@source "../../components/ui";
@source "../../components/web";@import "tailwindcss" source(none);
@source "./";
@source "../../components/ui";
@source "../../components/admin";@source "./" prohledá složku skupiny, další řádky přidají sdílené (ui) a vlastní komponenty dané části. Každý kořenový layout musí mít vlastní <html> a <body> a místo globals.css importuje ./web.css, resp. ./admin.css.
Next.js při navigaci na straně klienta už načtené styly neodebírá. Kdyby obě části sdílely jeden kořenový layout, po přechodu z administrace na web by v prohlížeči zůstaly i styly administrace (dvakrát preflight, možné konflikty). Přechod mezi různými kořenovými layouty je plné načtení stránky, takže se styly nemíchají.
Styly jen pro jednu stránku (z praxe tohoto webu)
Web Vrealmatic běží v Next.js přes jedinou routu [[...slug]], která podle databáze vybírá komponentu stránky. Tady import CSS v komponentě nepomůže: Next.js ho přibalí k té jediné routě, takže by se stahoval na každé stránce. A protože Tailwind prohledává všechny zdrojáky, i jednorázové třídy jedné stránky (bg-[linear-gradient(…)], lg:before:top-[-182px]) skončí v globálním CSS celého webu.
Rozsáhlejší styly stránky proto píšeme jako čisté CSS do public/css/pages/<stranka>.css a načítáme je malou komponentou, která využívá podporu stylů v React 19:
export function PageStyles({ name, v }: { name: string; v?: string }) {
const href = `/css/pages/${name}.css${v ? `?v=${v}` : ""}`;
return <link rel="stylesheet" href={href} precedence="page" />;
}<main className="tw">
<PageStyles name="tailwind-css" v="2026-10-06" />
<section className="tw-hero">…</section>
</main>Díky precedence React značku přesune do <head>, odstraní duplicity a při vykreslení na serveru počká na načtení stylu - stránka neproblikne bez stylů. Soubor se stáhne jen tam, kde se komponenta vykreslí, a prohlížeč ho cachuje. Právě takhle se načítají styly této stránky.
- Třídy v souboru s prefixem stránky (zde
tw-…), aby nekolidovaly s Tailwindem ani s jinými stránkami. - Soubor Tailwind nezpracovává - žádné
@applyani@theme, barvy přes vlastní CSS proměnné. - Styly jsou mimo kaskádové vrstvy, takže přebijí utility Tailwindu na prvcích uvnitř stránky - záměrně, ale pozor u sdílených komponent.
- V komponentě jen běžné utility, které web používá i jinde; jednorázové věci patří do souboru stránky.
- Po větší změně zvyšte
v, aby prohlížeč nepoužil starou verzi z cache.
Návody pro v3 používají samostatné soubory tailwind.home.config.js s polem content a parametr CLI -c. Ve v4 pole content neexistuje a automatická detekce by do obou souborů zahrnula třídy ze všech šablon. Pokud JS konfiguraci přechodně potřebujete (např. kvůli pluginu), načtěte ji v CSS direktivou @config "../../tailwind.config.js"; - volby corePlugins, safelist a separator ale v4 nepodporuje.
source(none)+@source= každý CSS soubor jen ze svých šablon (CLI, PostCSS i Vite).- Next.js: oddělené části = oddělené kořenové layouty, jinak se styly při navigaci sčítají.
- Velké styly jedné stránky v Next.js: čisté CSS v
public/+<link precedence>.
06 · Problémy
Když se styl neprojeví
Nejčastější důvod, proč se styl neprojeví: Tailwind třídu v souborech nenašel jako celé slovo, a proto ji nevygeneroval.
| Příznak | Příčina | Řešení |
|---|---|---|
| Třída v šabloně nemá žádný styl | Název třídy se skládá dynamicky, např. class="bg-{{color}}-500" nebo `bg-${color}-500` | Pište celé názvy (bg-red-500, bg-green-500) a vybírejte mezi nimi, nebo je vynuťte přes @source inline("bg-red-500 bg-green-500"); |
| Třídy z některé složky chybí | Složka je v .gitignore, nebo ji po rozdělení CSS nepokrývá žádný @source | Přidejte @source "cesta/ke/slozce"; (cesta relativní k CSS souboru) |
| Výsledné CSS je skoro prázdné (CLI) | Příkaz běží z jiné složky, než je kořen projektu | Spouštějte z kořene, nebo nastavte základ: @import "tailwindcss" source("../"); |
Chyba u @tailwind base; nebo npx tailwindcss init | Syntaxe a příkazy z Tailwind 3 | @import "tailwindcss";, CLI je npx @tailwindcss/cli, init ve v4 není |
Next.js: „It looks like you're trying to use tailwindcss directly as a PostCSS plugin“ | V postcss.config zůstal zápis z v3 | Nainstalujte @tailwindcss/postcss a v configu použijte "@tailwindcss/postcss": {} |
| Next.js: CSS jedné stránky se načítá na všech stránkách | Import CSS v komponentě pod společnou routou nebo layoutem | Styly stránky přes <link precedence>, oddělené části přes skupiny rout |
| Next.js: po přechodu do jiné části webu se styly míchají | Při navigaci na straně klienta Next.js načtené styly neodebírá | Oddělené kořenové layouty (přechod mezi nimi = plné načtení) a prefixy tříd ve vlastním CSS |
| Build zbytečně prochází velkou složku | Automatická detekce prohledá vše, co není v .gitignore | Vynechte ji: @source not "../legacy"; |
| Na serveru build hlásí neznámý příkaz (CLI) | Balíčky jsou v devDependencies a server instaluje npm ci --omit=dev | Sestavte CSS předem (lokálně nebo v CI), nebo instalujte bez -D |
| Změna se v prohlížeči neprojeví | Neběží dev:css / next dev, nebo prohlížeč drží starou verzi v cache | Zkontrolujte terminál, obnovte stránku bez cache (Ctrl+F5), u souborů v public/ přidejte verzi do URL (style.css?v=2) |
Zdroje
Oficiální dokumentace a další čtení
Návod vychází z oficiální dokumentace (anglicky) a z nastavení tohoto webu:
- Instalace přes Tailwind CLIOficiální postup pro projekty bez bundleru.
- Tailwind v Next.jsOficiální postup instalace přes PostCSS.
- Detekce tříd ve zdrojích@source, source(none), @source not a inline().
- Theme variablesJmenné prostory proměnných v @theme a volba inline.
- Vlastní styly@utility, @layer components a @custom-variant.
- Upgrade guideKompletní seznam změn mezi v3 a v4.
- Next.js: CSSGlobální CSS, pořadí a slučování stylů v App Routeru.
- React: <link precedence>Načítání stylů z komponent v React 19.
- npm-run-all2Paralelní a sekvenční spouštění npm skriptů.
Související
- Webové službyVývoj, správa a zrychlení webů na míru.
- Next.js (anglicky)Základy frameworku: routování, vykreslování a komponenty.
Jak citovat tuto publikaci (ČSN ISO 690:2022)NEPOR, Vladimír. Tailwind CSS v4: instalace pro Express i Next.js a rozdělení CSS. Online. Vrealmatic, 2025. Dostupné z: https://vrealmatic.com/cs/tailwind-css. [citováno ].
Potřebujete s webem pomoci?
Navrhneme a postavíme rychlý web nebo převedeme stávající projekt na Tailwind 4.