如何在你的 Next.js 应用程序中安装 Tailwind CSS
Tailwind CSS 是一个实用优先的 CSS 框架,与 Next.js 完全兼容。本指南将指导你如何在 Next.js 应用程序中安装 Tailwind CSS。
安装 Tailwind
安装必要的 Tailwind CSS 包:
Terminal
npm install -D tailwindcss @tailwindcss/postcss postcss
提示:如果你使用
create-next-app
CLI 创建项目,Next.js 会提示你是否要安装 Tailwind 并自动配置项目。
配置 Tailwind
在项目根目录创建 postcss.config.mjs
文件,并将 @tailwindcss/postcss
插件添加到你的 PostCSS 配置中:
postcss.config.mjs
export default {
plugins: {
'@tailwindcss/postcss': {},
},
}
从 Tailwind v4 开始,默认情况下不需要任何配置。如果你确实需要配置 Tailwind,可以按照官方文档来配置全局 CSS 文件。
如果你有现有的 Tailwind v3 项目,还有升级 CLI 和指南。
导入样式
将 Tailwind CSS 指令添加到应用程序的全局样式表中,Tailwind 将使用这些指令来注入其生成的样式,例如:
app/globals.css
@import 'tailwindcss';
在根布局(app/layout.tsx
)中,导入 globals.css
样式表以将样式应用到应用程序中的每个路由。
- TypeScript
- JavaScript
app/layout.tsx
import type { Metadata } from 'next'
// 这些样式应用于应用程序中的每个路由
import './globals.css'
export const metadata: Metadata = {
title: 'Create Next App',
description: 'Generated by create next app',
}
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en">
<body>{children}</body>
</html>
)
}
app/layout.js
// 这些样式应用于应用程序中的每个路由
import './globals.css'
export const metadata = {
title: 'Create Next App',
description: 'Generated by create next app',
}
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>{children}</body>
</html>
)
}
使用类
安装 Tailwind CSS 并添加全局样式后,你可以在应用程序中使用 Tailwind 的实用类。
- TypeScript
- JavaScript
app/page.tsx
export default function Page() {
return <h1 className="text-3xl font-bold underline">Hello, Next.js!</h1>
}
app/page.js
export default function Page() {
return <h1 className="text-3xl font-bold underline">Hello, Next.js!</h1>
}
自定义配置
如果你需要自定义 Tailwind 配置,可以创建 tailwind.config.js
文件:
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: {
colors: {
background: 'var(--background)',
foreground: 'var(--foreground)',
},
},
},
plugins: [],
}
示例
以下是一个使用 Tailwind CSS 的简单组件示例:
- TypeScript
- JavaScript
app/components/Button.tsx
interface ButtonProps {
children: React.ReactNode
variant?: 'primary' | 'secondary'
size?: 'sm' | 'md' | 'lg'
}
export default function Button({
children,
variant = 'primary',
size = 'md'
}: ButtonProps) {
const baseClasses = 'font-medium rounded-lg transition-colors'
const variantClasses = {
primary: 'bg-blue-600 text-white hover:bg-blue-700',
secondary: 'bg-gray-200 text-gray-900 hover:bg-gray-300',
}
const sizeClasses = {
sm: 'px-3 py-1.5 text-sm',
md: 'px-4 py-2 text-base',
lg: 'px-6 py-3 text-lg',
}
return (
<button
className={`${baseClasses} ${variantClasses[variant]} ${sizeClasses[size]}`}
>
{children}
</button>
)
}
app/components/Button.js
export default function Button({
children,
variant = 'primary',
size = 'md'
}) {
const baseClasses = 'font-medium rounded-lg transition-colors'
const variantClasses = {
primary: 'bg-blue-600 text-white hover:bg-blue-700',
secondary: 'bg-gray-200 text-gray-900 hover:bg-gray-300',
}
const sizeClasses = {
sm: 'px-3 py-1.5 text-sm',
md: 'px-4 py-2 text-base',
lg: 'px-6 py-3 text-lg',
}
return (
<button
className={`${baseClasses} ${variantClasses[variant]} ${sizeClasses[size]}`}
>
{children}
</button>
)
}
下一步
- 查看 Tailwind CSS 文档 了解更多实用类
- 探索 Tailwind CSS 组件 获取预构建组件
- 学习如何自定义主题以匹配你的设计系统