Styling
by Tomas Trescak· Next.js

0 / 2950 XP

Presentation Transcript
If you prefer text to video, check out the transcript of the presentation above

Slide 1 ----------- Slide 2 ----------- Part 1: Alright, let's talk CSS in Next.js, specifically focusing on where we import our styles. A well-structured CSS setup is absolutely essential for keeping our blog application maintainable as it grows. Part 2: The location of our CSS import directly determines the scope of those styles – whether they apply to a single component or the entire application. It's all about keeping things organized and preventing style conflicts. Slide 3 ----------- Part 1: First up: CSS Modules. These are designed for component-level styling. Part 2: We place the .module.css file (or .module.scss for Sass) right next to the component file itself. This establishes a clear connection between the component and its styles. Part 3: And the import? It happens directly within the component file. This localizes the styles, preventing them from accidentally affecting other parts of the application. It's like each component having its own self-contained style sheet. Part 4: Here's a typical example. We import styles from the corresponding module css file. Next.js handles the rest, ensuring the styles are only scoped to this component. Slide 4 ----------- Part 1: Global CSS applies to application-wide styles and is accessible in every component. Part 2: We usually create a globals.css file (or similar) to house these styles. Part 3: The crucial step is to import this globals css file into our root layout component, usually app/layout tsx. This ensures that the global styles are loaded on every blog page. You can further import styles from any package stored in the node modules. Part 4: A simple import statement in our root layout makes these styles globally accessible. This is the designated spot for styles that should be consistent across all pages. Slide 5 ----------- Part 1: Let's explore some additional styling options. Part 2: We've talked about Tailwind, but to reiterate, it's a utility-first CSS framework. Instead of writing custom CSS, you apply pre-defined utility classes directly in your HTML. Think classes like text-3xl font-bold for large, bold text. It's quick for development but can sometimes lead to long class names. Part 3: CSS-in-JS libraries let you write CSS inside your JavaScript components. While convenient, we generally recommend CSS Modules or Tailwind for our blog. CSS-in-JS can introduce performance considerations, especially with React Server Components, and might not be the most efficient solution in the long run. Part 4: CSS frameworks like Bootstrap and Material UI provide pre-built components and styling. They can speed up development but might add extra weight to your project if you only use a small portion of their features. Import them as external stylesheets.

Description
All the extra information about this section

We have already covered styling in React in our previous lecture, let's zero in on the specifics of CSS in Next.js, mainly where we can import different types of styles. This is a crucial aspect for organising our blog application effectively. * CSS Modules: These are designed for component-level styling and should be imported directly into the component where they're used. The typical pattern is to place the .module.css file (or .module.scss for Sass) in the same directory as the component itself. This keeps the styles closely tied to the component, making our codebase easier to manage. * Global CSS: Global styles, as the name suggests, apply to the entire application. Therefore, they need to be imported into a component that's rendered on every page. The ideal place for this is your root layout component, usually app/layout.tsx. Importing global CSS here ensures that these styles are available throughout your blog. * Tailwind CSS: With Tailwind, you'll typically have a globals.css file (or similar) where you include the @tailwinddirectives. This file, containing your Tailwind setup, is then imported into your root layout (app/layout.tsx), just like global CSS. This makes the Tailwind utilities available across your entire application. * External Stylesheets: If you're using CSS from an external package (like Bootstrap), you can import it directly into any component where you need those styles. Often, this is done in the root layout (app/layout.tsx) if the external styles are intended to be global, or within a specific component if the styles are only needed there. Just remember, you must import the stylesheet directly from the npm package or a colocated file; you cannot use <link rel="stylesheet" />. * Sass: Sass files, whether they are module-specific (.module.scss) or global (.scss), follow the same import rules as regular CSS files. Module-specific Sass goes into the corresponding component's directory and is imported there, while global Sass can be imported into the root layout. Key takeaway: The location of your CSS import depends on the scope of the styles. Component-specific styles (CSS Modules and sometimes external stylesheets) are imported into the components themselves. Global styles (global CSS, Tailwind setup, or global Sass) are imported into the root layout to ensure they're applied everywhere. Keeping this pattern consistent will make our blog's styling much more maintainable.
Maggie

Discuss with Maggie
Use the power of generative AI to interact with course content

Maggie is a generative AI that can help you understand the course content better. You can ask her questions about the lecture, and she will try to answer them. You can also see the questions asked by other students and her responses.

Discuss with Others
Ask questions, share your thoughts, and discuss with other learners

Join the discussion to ask questions, share your thoughts, and discuss with other learners
Setup
React Fundamentals
10 points
Next.js
10 points
Advanced React
Databases
10 points
React Hooks
Authentication and Authorisation
10 points
APIs
CI/CD and DevOps
Testing React
Advanced Topics