Bird
Raised Fist0
NextJSframework~20 mins

Tailwind CSS integration in NextJS - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Tailwind CSS Integration Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
1:30remaining
What is the visual output of this Next.js component using Tailwind CSS?

Consider this Next.js functional component styled with Tailwind CSS classes. What will the user see when this component renders?

NextJS
export default function Button() {
  return (
    <button className="bg-blue-600 hover:bg-blue-800 text-white font-bold py-2 px-4 rounded">
      Click me
    </button>
  )
}
AA plain button with default browser styling
BA blue button with white bold text that darkens on hover and has rounded corners
CA red button with white text and square corners
DA button with blue text on white background and no hover effect
Attempts:
2 left
💡 Hint

Look at the Tailwind classes: bg-blue-600, hover:bg-blue-800, text-white, and rounded.

📝 Syntax
intermediate
1:30remaining
Which Tailwind CSS setup file is required for Next.js to enable custom styles?

In a Next.js project, which file must you create or modify to include Tailwind CSS directives for your styles?

Anext.config.js with Tailwind CSS plugin configuration
Bpages/_app.js with Tailwind CSS import statements
Ctailwind.config.js with CSS rules inside
Dstyles/globals.css with Tailwind directives like @tailwind base; @tailwind components; @tailwind utilities;
Attempts:
2 left
💡 Hint

Think about where CSS directives are placed to load Tailwind styles globally.

🔧 Debug
advanced
2:00remaining
Why does this Next.js component not apply Tailwind styles correctly?

Given this component, why might the Tailwind CSS classes not style the button as expected?

NextJS
export default function MyButton() {
  return (
    <button className="bg-green-500 text-white p-3 rounded">
      Press me
    </button>
  )
}
AThe attribute should be className, not class, in JSX
BThe p-3 class is invalid and causes styles to break
CThe button element must be wrapped in a div for Tailwind to work
DTailwind CSS does not support bg-green-500 class
Attempts:
2 left
💡 Hint

Remember how JSX handles HTML attributes differently.

❓ state_output
advanced
2:00remaining
What is the button text after clicking in this Next.js component styled with Tailwind?

Review this component that toggles button text and styles on click. What text will the button show after the first click?

NextJS
import { useState } from 'react';

export default function ToggleButton() {
  const [active, setActive] = useState(false);

  return (
    <button
      className={active ? 'bg-red-500 text-white' : 'bg-gray-300 text-black'}
      onClick={() => setActive(!active)}
    >
      {active ? 'Active' : 'Inactive'}
    </button>
  );
}
A"Active" with gray background and black text
B"Inactive" with gray background and black text
C"Active" with red background and white text
D"Inactive" with red background and white text
Attempts:
2 left
💡 Hint

Check how the active state toggles and affects text and classes.

🧠 Conceptual
expert
2:30remaining
Which Tailwind CSS feature enables conditional styling in Next.js components without inline styles?

In Next.js with Tailwind CSS, how can you apply styles conditionally based on component state or props without using inline styles or manual string concatenation?

AUsing the <code>clsx</code> or <code>classnames</code> utility libraries to conditionally join class names
BWriting multiple CSS files and importing them conditionally
CUsing inline <code>style</code> attributes with JavaScript objects
DModifying the tailwind.config.js file dynamically at runtime
Attempts:
2 left
💡 Hint

Think about how to manage class names cleanly in React components.

Practice

(1/5)
1. What is the main purpose of integrating Tailwind CSS in a Next.js project?
easy
A. To handle server-side rendering manually
B. To add backend API routes
C. To manage database connections
D. To quickly style components using utility classes

Solution

  1. Step 1: Understand Tailwind CSS role

    Tailwind CSS provides utility classes for styling UI elements quickly without writing custom CSS.
  2. Step 2: Relate to Next.js integration

    In Next.js, Tailwind is used to style components easily, not for backend or rendering logic.
  3. Final Answer:

    To quickly style components using utility classes -> Option D
  4. Quick Check:

    Tailwind CSS = Utility-first styling [OK]
Hint: Tailwind is for styling, not backend or rendering [OK]
Common Mistakes:
  • Confusing Tailwind with backend or API features
  • Thinking Tailwind manages server rendering
  • Assuming Tailwind handles database
2. Which file must you import Tailwind's base styles into for a Next.js project?
easy
A. next.config.js
B. tailwind.config.js
C. pages/_app.js or app/layout.js
D. package.json

Solution

  1. Step 1: Identify where global styles go in Next.js

    Global CSS imports happen in pages/_app.js for pages router or app/layout.js for app router.
  2. Step 2: Understand Tailwind import location

    Tailwind's base styles are imported in these files to apply styles app-wide.
  3. Final Answer:

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

    Global CSS import = _app.js or layout.js [OK]
Hint: Import Tailwind CSS in your main app wrapper file [OK]
Common Mistakes:
  • Trying to import styles in tailwind.config.js
  • Importing in next.config.js which is config only
  • Adding styles in package.json which is metadata
3. Given this Next.js component using Tailwind CSS, what color will the button text be?
export default function Button() {
  return <button className="text-red-500 hover:text-blue-500">Click me</button>;
}
medium
A. Red text that turns blue on hover
B. Blue text that turns red on hover
C. Always blue text
D. Always red text with no hover effect

Solution

  1. Step 1: Analyze the Tailwind classes

    The button has text-red-500 which sets text color red initially, and hover:text-blue-500 which changes text color to blue on hover.
  2. Step 2: Understand hover behavior

    When the mouse is over the button, the text color changes to blue; otherwise, it stays red.
  3. Final Answer:

    Red text that turns blue on hover -> Option A
  4. Quick Check:

    text-red-500 + hover:text-blue-500 = red then blue on hover [OK]
Hint: Hover classes override base styles on mouse over [OK]
Common Mistakes:
  • Ignoring hover prefix and thinking text is always blue
  • Confusing initial and hover colors
  • Assuming no color change on hover
4. You added Tailwind CSS to your Next.js app but styles are not applying. What is a likely cause?
medium
A. You forgot to import 'tailwind.css' in your main app file
B. You didn't install React correctly
C. You used invalid JSX syntax in components
D. You didn't restart the Next.js server after installing Tailwind

Solution

  1. Step 1: Check Tailwind CSS import

    If Tailwind styles are missing, often the CSS file with Tailwind directives is not imported in _app.js or layout.js.
  2. Step 2: Consider other causes

    While restarting server helps, missing import is the primary cause. React install or JSX errors cause different issues.
  3. Final Answer:

    You forgot to import 'tailwind.css' in your main app file -> Option A
  4. Quick Check:

    Missing Tailwind import = no styles [OK]
Hint: Always import Tailwind CSS file in your main app file [OK]
Common Mistakes:
  • Assuming React install affects Tailwind styles
  • Ignoring missing CSS import
  • Not restarting server but that alone won't fix missing styles
5. You want to create a responsive Next.js component using Tailwind CSS that shows a green background on small screens and blue on medium and larger screens. Which class combination achieves this?
hard
A. "bg-blue-500 md:bg-green-500"
B. "bg-green-500 md:bg-blue-500"
C. "md:bg-green-500 bg-blue-500"
D. "bg-green-500 bg-blue-500 md:bg-green-500"

Solution

  1. Step 1: Understand Tailwind responsive prefixes

    Classes without prefix apply to all screen sizes. Prefix md: applies styles at medium screens and above.
  2. Step 2: Apply background colors correctly

    To have green on small screens, use bg-green-500. To override with blue on medium+, use md:bg-blue-500.
  3. Final Answer:

    "bg-green-500 md:bg-blue-500" -> Option B
  4. Quick Check:

    Small = green, Medium+ = blue with md: prefix [OK]
Hint: Use base class for small, md: prefix for medium+ [OK]
Common Mistakes:
  • Reversing colors with md prefix
  • Using multiple base classes causing conflicts
  • Not understanding responsive prefixes
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