Bird
Raised Fist0
Tailwindmarkup~20 mins

Class-based dark mode strategy in Tailwind - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Dark Mode Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
How does Tailwind's class-based dark mode work?
In Tailwind CSS, when using the class-based dark mode strategy, which HTML element should you add the dark class to enable dark styles for the entire page?
AThe <code>&lt;body&gt;</code> element
BThe <code>&lt;html&gt;</code> element
CThe <code>&lt;head&gt;</code> element
DThe <code>&lt;main&gt;</code> element
Attempts:
2 left
💡 Hint
Think about which element wraps the whole page content and can control styles globally.
📝 Syntax
intermediate
2:00remaining
Which Tailwind config enables class-based dark mode?
Given this Tailwind CSS configuration snippet, which option correctly enables class-based dark mode?
Tailwind
module.exports = {
  darkMode: ???,
  theme: {
    extend: {},
  },
  plugins: [],
}
Afalse
B"media"
Ctrue
D"class"
Attempts:
2 left
💡 Hint
The value should be a string that tells Tailwind to use a CSS class for dark mode.
❓ rendering
advanced
2:00remaining
What is the visual output when toggling dark mode class?
Consider this HTML snippet using Tailwind with class-based dark mode enabled:
<html class="dark">
  <body>
    <div class="bg-white dark:bg-gray-800 text-black dark:text-white p-4">
      Hello, dark mode!
    </div>
  </body>
</html>
What background and text colors will the <div> have when the dark class is present on <html>?
ABackground: gray-800, Text: white
BBackground: white, Text: black
CBackground: gray-800, Text: black
DBackground: white, Text: white
Attempts:
2 left
💡 Hint
Remember that the dark: prefix applies styles only when the dark class is present.
❓ selector
advanced
2:00remaining
Which CSS selector does Tailwind use for class-based dark mode?
When Tailwind generates CSS for class-based dark mode, which selector pattern does it use to apply dark styles?
A.dark &lt;selector&gt; { ... }
B&lt;selector&gt;.dark { ... }
C.dark > &lt;selector&gt; { ... }
D:root.dark &lt;selector&gt; { ... }
Attempts:
2 left
💡 Hint
Think about how CSS applies styles when a parent has a class.
❓ accessibility
expert
3:00remaining
How to maintain accessibility when toggling dark mode with classes?
When implementing class-based dark mode toggling in Tailwind, which practice best supports accessibility for keyboard and screen reader users?
AReload the page to switch between dark and light modes
BToggle the <code>dark</code> class on <code>&lt;body&gt;</code> without any ARIA attributes
CToggle the <code>dark</code> class on <code>&lt;html&gt;</code> and update <code>aria-pressed</code> on the toggle button accordingly
DUse JavaScript to add inline styles instead of toggling classes
Attempts:
2 left
💡 Hint
Accessibility means informing assistive technologies about state changes.

Practice

(1/5)
1. What does the dark: prefix in Tailwind CSS do when using class-based dark mode?
easy
A. Applies styles only when a parent element has the dark class.
B. Automatically detects system dark mode and applies styles.
C. Adds a dark background color to all elements.
D. Disables all light mode styles on the page.

Solution

  1. Step 1: Understand the dark: prefix role

    The dark: prefix in Tailwind applies styles only when the dark class is present on a parent element.
  2. Step 2: Compare with other options

    It does not auto-detect system settings or disable light styles; it depends on the dark class presence.
  3. Final Answer:

    Applies styles only when a parent element has the dark class. -> Option A
  4. Quick Check:

    dark: prefix = styles with dark class [OK]
Hint: Remember: dark: works only if dark class exists [OK]
Common Mistakes:
  • Thinking dark: auto-detects system dark mode
  • Assuming it changes styles without the dark class
  • Confusing dark: with global dark mode toggle
2. Which of the following is the correct way to enable dark mode using class strategy in Tailwind CSS?
easy
A. "darkMode: 'media'" in tailwind.config.js
B. "darkMode: 'class'" in tailwind.config.js
C. Adding dark attribute to body tag
D. Using dark-mode class instead of dark

Solution

  1. Step 1: Check Tailwind config for dark mode strategy

    To use class-based dark mode, you must set darkMode: 'class' in tailwind.config.js.
  2. Step 2: Eliminate other options

    darkMode: 'media' uses system preference, not class. The dark class must be added manually; no dark attribute exists. The class name must be exactly dark.
  3. Final Answer:

    "darkMode: 'class'" in tailwind.config.js -> Option B
  4. Quick Check:

    Config setting for class strategy = 'class' [OK]
Hint: Set darkMode to 'class' in config for class-based dark mode [OK]
Common Mistakes:
  • Using 'media' instead of 'class' in config
  • Adding wrong attribute instead of class
  • Using incorrect class name like 'dark-mode'
3. Given this HTML snippet:
<html class="dark">
  <body>
    <div class="bg-white dark:bg-gray-800 text-black dark:text-white p-4">Hello</div>
  </body>
</html>

What background and text colors will the <div> have when rendered?
medium
A. Background white, text black
B. Background gray-800, text black
C. Background gray-800, text white
D. Background white, text white

Solution

  1. Step 1: Identify presence of dark class

    The <html> tag has the dark class, so all dark: styles apply.
  2. Step 2: Apply styles based on class

    The div has bg-white and text-black normally, but with dark:bg-gray-800 and dark:text-white when dark class is present. So background is gray-800 and text is white.
  3. Final Answer:

    Background gray-800, text white -> Option C
  4. Quick Check:

    Dark class present = dark styles apply [OK]
Hint: If dark class exists, dark: styles override [OK]
Common Mistakes:
  • Ignoring the dark class on html
  • Mixing normal and dark styles incorrectly
  • Assuming no style changes without JavaScript
4. You want to toggle dark mode by adding/removing the dark class on body. Which of these JavaScript snippets correctly toggles dark mode?
medium
A. document.body.setAttribute('dark', true)
B. document.body.toggleClass('dark')
C. document.body.className = 'dark'
D. document.body.classList.toggle('dark')

Solution

  1. Step 1: Understand class toggling in JavaScript

    The correct method to toggle a class is classList.toggle('className').
  2. Step 2: Check each option

    document.body.classList.toggle('dark') uses classList.toggle('dark'), which is correct. document.body.toggleClass('dark') uses a non-existent toggleClass method. document.body.className = 'dark' overwrites all classes, removing others. document.body.setAttribute('dark', true) sets an attribute, not a class.
  3. Final Answer:

    document.body.classList.toggle('dark') -> Option D
  4. Quick Check:

    Toggle class method = classList.toggle [OK]
Hint: Use classList.toggle('dark') to switch dark mode on/off [OK]
Common Mistakes:
  • Using jQuery method toggleClass in plain JS
  • Replacing className instead of toggling
  • Setting attribute instead of class
5. You want to create a button that toggles dark mode by adding/removing the dark class on the html element. Which React code snippet correctly implements this using Tailwind's class-based dark mode?
hard
A. const toggleDark = () => { document.documentElement.classList.toggle('dark'); }; return Toggle Dark;
B. const toggleDark = () => { document.body.classList.add('dark'); }; return Toggle Dark;
C. const toggleDark = () => { document.documentElement.setAttribute('dark', 'true'); }; return Toggle Dark;
D. const toggleDark = () => { document.body.className = 'dark'; }; return Toggle Dark;

Solution

  1. Step 1: Identify correct element and method for toggling

    Tailwind's class-based dark mode expects the dark class on the html element (document.documentElement). Toggling means adding or removing the class, so classList.toggle is best.
  2. Step 2: Evaluate each option

    const toggleDark = () => { document.documentElement.classList.toggle('dark'); }; return Toggle Dark; toggles dark on html correctly. const toggleDark = () => { document.body.classList.add('dark'); }; return Toggle Dark; only adds dark to body (no toggle). const toggleDark = () => { document.documentElement.setAttribute('dark', 'true'); }; return Toggle Dark; sets an attribute instead of class. const toggleDark = () => { document.body.className = 'dark'; }; return Toggle Dark; overwrites all classes on body, removing others.
  3. Final Answer:

    const toggleDark = () => { document.documentElement.classList.toggle('dark'); }; return <button onClick={toggleDark}>Toggle Dark</button>; -> Option A
  4. Quick Check:

    Toggle dark class on html with classList.toggle [OK]
Hint: Toggle dark class on html using classList.toggle [OK]
Common Mistakes:
  • Adding class without toggling
  • Using wrong element like body
  • Setting attribute instead of class
  • Overwriting all classes instead of toggling
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