Bird
Raised Fist0
NextJSframework~10 mins

Global CSS in NextJS - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Global CSS
Create global CSS file
↓
Import global CSS in _app.js
↓
Next.js applies styles globally
↓
All pages/components share styles
↓
Styles cascade and override as usual
Global CSS files are created and imported once in the main app file, then Next.js applies these styles across all pages and components.
Execution Sample
NextJS
/* styles/globals.css */
body { margin: 0; font-family: Arial; }

// pages/_app.js
import '../styles/globals.css'

export default function App({ Component, pageProps }) {
  return <Component {...pageProps} />
}
This code imports a global CSS file in the main app component so styles apply to the whole Next.js app.
Execution Table
StepActionFileEffectResult
1Create global CSS file with stylesstyles/globals.cssDefines body margin and fontCSS file ready
2Import global CSS in _app.jspages/_app.jsNext.js loads CSS globallyStyles available app-wide
3Render App componentpages/_app.jsApply global styles to bodyAll pages use Arial font, no margin
4Navigate to any pageany pageGlobal styles persistConsistent look across pages
5Override styles in component CSScomponent CSSOverrides global styles locallyLocal styles take precedence
6ExitN/ANo more stepsGlobal CSS applied successfully
💡 All steps complete; global CSS loaded and applied across the app
Variable Tracker
VariableStartAfter Step 2After Step 3Final
globalCSSundefinedimportedappliedapplied globally
bodyStyledefault browseroverridden by global CSSapplied on renderArial font, margin 0
Key Moments - 2 Insights
Why do we import the global CSS only in _app.js?
Because _app.js wraps all pages, importing global CSS here ensures styles apply everywhere once, as shown in execution_table step 2.
What happens if a component has its own CSS that conflicts with global CSS?
Component CSS overrides global CSS locally due to CSS cascade rules, as seen in execution_table step 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, at which step is the global CSS first applied to the app?
AStep 3
BStep 2
CStep 4
DStep 1
💡 Hint
Check the 'Effect' column for when styles are applied on render.
According to variable_tracker, what is the state of bodyStyle after step 3?
Adefault browser style
Boverridden by global CSS
Capplied on render
Dundefined
💡 Hint
Look at the 'After Step 3' column for bodyStyle.
If you remove the import from _app.js, what would happen to the global CSS?
AIt would still apply globally
BIt would not apply anywhere
CIt would apply only to _app.js
DIt would apply only to pages but not components
💡 Hint
Refer to key_moments about why import in _app.js is necessary.
Concept Snapshot
Global CSS in Next.js:
- Create a CSS file (e.g., styles/globals.css)
- Import it once in pages/_app.js
- Styles apply globally to all pages/components
- Local component CSS can override global styles
- Ensures consistent styling across the app
Full Transcript
Global CSS in Next.js means creating a CSS file with styles you want everywhere. You import this file once in the special _app.js file. This file wraps all pages, so importing here makes the styles global. When the app renders, these styles apply to the whole app, like setting the font or margin on the body. If a component has its own CSS, it can override these global styles locally. This way, you keep a consistent look but still customize parts. Without importing the global CSS in _app.js, the styles won't apply anywhere.

Practice

(1/5)
1. In Next.js, where should you import your global CSS file to apply styles across the entire app?
easy
A. In app/layout.js or pages/_app.js
B. In every individual component file
C. Inside public folder
D. In next.config.js

Solution

  1. Step 1: Understand global CSS import location

    Global CSS must be imported once at the top-level layout or app file to apply styles app-wide.
  2. Step 2: Identify correct files for global CSS import

    Next.js uses app/layout.js in the new app directory or pages/_app.js in the pages directory for this purpose.
  3. Final Answer:

    In app/layout.js or pages/_app.js -> Option A
  4. Quick Check:

    Global CSS import location = A [OK]
Hint: Global CSS imports go only in app/layout.js or pages/_app.js [OK]
Common Mistakes:
  • Importing global CSS in every component causes errors
  • Placing CSS files in public folder expecting auto-import
  • Trying to import CSS in next.config.js
2. Which of the following is the correct syntax to import a global CSS file named styles.css in app/layout.js?
easy
A. import styles from './styles.css';
B. import './styles.css';
C. require('./styles.css');
D. link rel='stylesheet' href='./styles.css';

Solution

  1. Step 1: Recall global CSS import syntax in Next.js

    Global CSS files are imported without assigning to a variable, just using import './filename.css';.
  2. Step 2: Evaluate each option

    import styles from './styles.css'; tries to import as a module which is for CSS modules, not global CSS. require('./styles.css'); uses CommonJS require which is not standard in Next.js ES modules. link rel='stylesheet' href='./styles.css'; is HTML syntax, not JavaScript import.
  3. Final Answer:

    import './styles.css'; -> Option B
  4. Quick Check:

    Global CSS import syntax = D [OK]
Hint: Use plain import './filename.css'; for global CSS [OK]
Common Mistakes:
  • Using import with variable for global CSS
  • Using require() instead of import
  • Trying to add <link> tags inside JS files
3. Given this app/layout.js snippet:
import './globals.css';
export default function RootLayout({ children }) {
  return <html><body>{children}</body></html>;
}

If globals.css sets body { background-color: lightblue; }, what will be the background color of the page?
medium
A. White (default background)
B. Black
C. Transparent
D. Lightblue

Solution

  1. Step 1: Understand global CSS effect

    Importing globals.css in app/layout.js applies styles globally, including the body background color.
  2. Step 2: Check CSS rule impact

    The CSS rule body { background-color: lightblue; } sets the page background color to lightblue.
  3. Final Answer:

    Lightblue -> Option D
  4. Quick Check:

    Global CSS body background = B [OK]
Hint: Global CSS affects body styles if imported in layout [OK]
Common Mistakes:
  • Thinking global CSS won't apply without explicit class
  • Assuming default white background overrides CSS
  • Confusing local CSS modules with global CSS
4. You added import './globals.css'; inside a React component file instead of app/layout.js. What problem will you most likely face?
medium
A. Next.js build error about global CSS import location
B. CSS styles will apply only to that component
C. No styles will apply anywhere
D. Styles will load twice causing duplication

Solution

  1. Step 1: Recall Next.js global CSS import rules

    Next.js requires global CSS to be imported only in app/layout.js or pages/_app.js. Importing elsewhere causes errors.
  2. Step 2: Identify error behavior

    Importing global CSS inside a component triggers a build error stating global CSS cannot be imported from non-top-level files.
  3. Final Answer:

    Next.js build error about global CSS import location -> Option A
  4. Quick Check:

    Global CSS import location error = A [OK]
Hint: Global CSS import outside layout causes build error [OK]
Common Mistakes:
  • Importing global CSS in components expecting scoped styles
  • Ignoring build errors and expecting styles to work
  • Confusing global CSS with CSS modules
5. You want to set a global font and base color for your Next.js app. Which approach correctly applies these styles globally and ensures they affect all pages?
hard
A. Use CSS modules in each component to set font and color
B. Add inline styles to each page component separately
C. Create globals.css with font and color styles, then import it once in app/layout.js
D. Add a <style> tag with font and color in pages/index.js only

Solution

  1. Step 1: Understand global styling needs

    Global fonts and colors should be set once to apply app-wide, not repeated per page or component.
  2. Step 2: Choose correct global CSS usage

    Creating a globals.css file with base styles and importing it once in app/layout.js ensures consistent global styles.
  3. Final Answer:

    Create globals.css and import it once in app/layout.js -> Option C
  4. Quick Check:

    Global base styles = C [OK]
Hint: Put base styles in globals.css and import once in layout [OK]
Common Mistakes:
  • Using inline styles repeatedly instead of global CSS
  • Relying on CSS modules for global styles
  • Adding styles only on one page expecting global effect
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard