Next.js: A Practical Introduction for Developers

Utility-First CSS with Tailwind CSS

Section 4

Styling and Components: Building User Interfaces

Next.js: A Practical Introduction for DevelopersStyling and Components: Building User Interfaces

As you build user interfaces with Next.js, choosing the right styling approach is crucial. While traditional CSS, CSS Modules, and styled-components are all viable options, utility-first CSS with Tailwind CSS has gained immense popularity for its speed and maintainability. Tailwind CSS is a highly customizable, low-level CSS framework that lets you build designs directly from your markup by offering a set of predefined classes that you can compose to create any design, without writing a single line of custom CSS.

Let's explore how to integrate and leverage Tailwind CSS within your Next.js projects.

Getting Tailwind CSS up and running in a Next.js project is straightforward. You'll typically start by installing the necessary packages. First, ensure you have Tailwind CSS and its peer dependencies installed.

npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p

This will create a tailwind.config.js file and a postcss.config.js file. Next, you need to tell Tailwind which of your template files contain Tailwind class names. This is done by configuring the content option in your tailwind.config.js file. For a Next.js project, this usually looks like this:

/** @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}",
    // Or if using `src` directory:
    "./src/**/*.{js,ts,jsx,tsx,mdx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}

Finally, you need to import Tailwind's base styles, components, and utilities into your CSS. The most common place to do this is in your main CSS file, often globals.css in a Next.js project's app or pages directory.

チャプターへ戻る