174 lines
3.9 KiB
Markdown
174 lines
3.9 KiB
Markdown
|
|
---
|
||
|
|
title: How to install Tailwind CSS v3 in your Next.js application
|
||
|
|
nav_title: Tailwind CSS v3
|
||
|
|
description: Style your Next.js Application using Tailwind CSS v3 for broader browser support.
|
||
|
|
---
|
||
|
|
|
||
|
|
{/* The content of this doc is shared between the app and pages router. You can use the `<PagesOnly>Content</PagesOnly>` component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */}
|
||
|
|
|
||
|
|
This guide will walk you through how to install [Tailwind CSS v3](https://v3.tailwindcss.com/) in your Next.js application.
|
||
|
|
|
||
|
|
> **Good to know:** For the latest Tailwind 4 setup, see the [Tailwind CSS setup instructions](/docs/app/getting-started/css#tailwind-css).
|
||
|
|
|
||
|
|
## Installing Tailwind v3
|
||
|
|
|
||
|
|
Install Tailwind CSS and its peer dependencies, then run the `init` command to generate both `tailwind.config.js` and `postcss.config.js` files:
|
||
|
|
|
||
|
|
```bash package="pnpm"
|
||
|
|
pnpm add -D tailwindcss@^3 postcss autoprefixer
|
||
|
|
npx tailwindcss init -p
|
||
|
|
```
|
||
|
|
|
||
|
|
```bash package="npm"
|
||
|
|
npm install -D tailwindcss@^3 postcss autoprefixer
|
||
|
|
npx tailwindcss init -p
|
||
|
|
```
|
||
|
|
|
||
|
|
```bash package="yarn"
|
||
|
|
yarn add -D tailwindcss@^3 postcss autoprefixer
|
||
|
|
npx tailwindcss init -p
|
||
|
|
```
|
||
|
|
|
||
|
|
```bash package="bun"
|
||
|
|
bun add -D tailwindcss@^3 postcss autoprefixer
|
||
|
|
bunx tailwindcss init -p
|
||
|
|
```
|
||
|
|
|
||
|
|
## Configuring Tailwind v3
|
||
|
|
|
||
|
|
Configure your template paths in your `tailwind.config.js` file:
|
||
|
|
|
||
|
|
<AppOnly>
|
||
|
|
|
||
|
|
```js filename="tailwind.config.js"
|
||
|
|
/** @type {import('tailwindcss').Config} */
|
||
|
|
module.exports = {
|
||
|
|
content: [
|
||
|
|
'./app/**/*.{js,ts,jsx,tsx,mdx}',
|
||
|
|
'./pages/**/*.{js,ts,jsx,tsx,mdx}',
|
||
|
|
'./components/**/*.{js,ts,jsx,tsx,mdx}',
|
||
|
|
],
|
||
|
|
theme: {
|
||
|
|
extend: {},
|
||
|
|
},
|
||
|
|
plugins: [],
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Add the Tailwind directives to your global CSS file:
|
||
|
|
|
||
|
|
```css filename="app/globals.css"
|
||
|
|
@tailwind base;
|
||
|
|
@tailwind components;
|
||
|
|
@tailwind utilities;
|
||
|
|
```
|
||
|
|
|
||
|
|
Import the CSS file in your root layout:
|
||
|
|
|
||
|
|
```tsx filename="app/layout.tsx" switcher
|
||
|
|
import './globals.css'
|
||
|
|
|
||
|
|
export default function RootLayout({
|
||
|
|
children,
|
||
|
|
}: {
|
||
|
|
children: React.ReactNode
|
||
|
|
}) {
|
||
|
|
return (
|
||
|
|
<html lang="en">
|
||
|
|
<body>{children}</body>
|
||
|
|
</html>
|
||
|
|
)
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
```jsx filename="app/layout.js" switcher
|
||
|
|
import './globals.css'
|
||
|
|
|
||
|
|
export default function RootLayout({ children }) {
|
||
|
|
return (
|
||
|
|
<html lang="en">
|
||
|
|
<body>{children}</body>
|
||
|
|
</html>
|
||
|
|
)
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
</AppOnly>
|
||
|
|
|
||
|
|
<PagesOnly>
|
||
|
|
|
||
|
|
```js filename="tailwind.config.js"
|
||
|
|
/** @type {import('tailwindcss').Config} */
|
||
|
|
module.exports = {
|
||
|
|
content: [
|
||
|
|
'./pages/**/*.{js,ts,jsx,tsx,mdx}',
|
||
|
|
'./components/**/*.{js,ts,jsx,tsx,mdx}',
|
||
|
|
'./app/**/*.{js,ts,jsx,tsx,mdx}',
|
||
|
|
],
|
||
|
|
theme: {
|
||
|
|
extend: {},
|
||
|
|
},
|
||
|
|
plugins: [],
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Add the Tailwind directives to your global CSS file:
|
||
|
|
|
||
|
|
```css filename="styles/globals.css"
|
||
|
|
@tailwind base;
|
||
|
|
@tailwind components;
|
||
|
|
@tailwind utilities;
|
||
|
|
```
|
||
|
|
|
||
|
|
Import the CSS file in your `pages/_app.js` file:
|
||
|
|
|
||
|
|
```jsx filename="pages/_app.js"
|
||
|
|
import '@/styles/globals.css'
|
||
|
|
|
||
|
|
export default function MyApp({ Component, pageProps }) {
|
||
|
|
return <Component {...pageProps} />
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
</PagesOnly>
|
||
|
|
|
||
|
|
## Using classes
|
||
|
|
|
||
|
|
After installing Tailwind CSS and adding the global styles, you can use Tailwind's utility classes in your application.
|
||
|
|
|
||
|
|
<AppOnly>
|
||
|
|
|
||
|
|
```tsx filename="app/page.tsx" switcher
|
||
|
|
export default function Page() {
|
||
|
|
return <h1 className="text-3xl font-bold underline">Hello, Next.js!</h1>
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
```jsx filename="app/page.js" switcher
|
||
|
|
export default function Page() {
|
||
|
|
return <h1 className="text-3xl font-bold underline">Hello, Next.js!</h1>
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
</AppOnly>
|
||
|
|
|
||
|
|
<PagesOnly>
|
||
|
|
|
||
|
|
```tsx filename="pages/index.tsx" switcher
|
||
|
|
export default function Page() {
|
||
|
|
return <h1 className="text-3xl font-bold underline">Hello, Next.js!</h1>
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
```jsx filename="pages/index.js" switcher
|
||
|
|
export default function Page() {
|
||
|
|
return <h1 className="text-3xl font-bold underline">Hello, Next.js!</h1>
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
</PagesOnly>
|
||
|
|
|
||
|
|
## Usage with Turbopack
|
||
|
|
|
||
|
|
As of Next.js 13.1, Tailwind CSS and PostCSS are supported with [Turbopack](https://turbo.build/pack/docs/features/css#tailwind-css).
|