Bird
Raised Fist0
Astroframework~10 mins

CSS Modules support in Astro - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import a CSS module in an Astro component.

Astro
import styles from './Button.module.css';

export default function Button() {
  return <button className={styles.[1]>Click me</button>;
}
Drag options to blanks, or click blank then click option'
Abutton
Bcontainer
Cbtn
Dheader
Attempts:
3 left
💡 Hint
Common Mistakes
Using a class name not defined in the CSS module.
Forgetting to use the imported styles object.
2fill in blank
medium

Complete the code to apply multiple CSS module classes to an element in Astro.

Astro
<div className={`${styles.container} [1]`}>Content</div>
Drag options to blanks, or click blank then click option'
Astyles.content
Bstyles.main
Cstyles.header
Dstyles.footer
Attempts:
3 left
💡 Hint
Common Mistakes
Not using template literals to combine classes.
Using plain strings instead of styles object.
3fill in blank
hard

Fix the error in the Astro component to correctly use CSS modules for styling.

Astro
import styles from './Card.module.css';

export default function Card() {
  return <section className=[1]>Card content</section>;
}
Drag options to blanks, or click blank then click option'
Astyles.card
B"card"
Ccard
Dstyles['card']
Attempts:
3 left
💡 Hint
Common Mistakes
Using plain string class names instead of styles object.
Forgetting to import the CSS module.
4fill in blank
hard

Fill both blanks to create a CSS module style object and apply it to a div in Astro.

Astro
import [1] from './Layout.module.css';

export default function Layout() {
  return <div className=[2].wrapper}}>Layout content</div>;
}
Drag options to blanks, or click blank then click option'
Astyles
Bstyle
CLayoutStyles
Dcss
Attempts:
3 left
💡 Hint
Common Mistakes
Using different names for import and usage.
Not using curly braces correctly in JSX.
5fill in blank
hard

Fill all three blanks to create a CSS module, import it, and apply multiple classes in Astro.

Astro
/* Layout.module.css */
.wrapper {
  display: flex;
}
.main {
  flex: 1;
}

---

import [1] from './Layout.module.css';

export default function Layout() {
  return (
    <div className=[2].wrapper}>
      <main className=[3].main}>Content</main>
    </div>
  );
}
Drag options to blanks, or click blank then click option'
Astyles
Bstyle
CLayoutStyles
Dcss
Attempts:
3 left
💡 Hint
Common Mistakes
Using different names for import and usage.
Forgetting to import the CSS module.

Practice

(1/5)
1. What is the main benefit of using CSS Modules in Astro components?
easy
A. They keep styles local to components, avoiding conflicts.
B. They automatically minify CSS for faster loading.
C. They allow inline styles directly in HTML tags.
D. They enable global styles to override component styles.

Solution

  1. Step 1: Understand CSS Modules purpose

    CSS Modules scope styles locally to components to prevent style conflicts.
  2. Step 2: Compare options

    Only They keep styles local to components, avoiding conflicts. correctly describes this main benefit; others describe unrelated features.
  3. Final Answer:

    They keep styles local to components, avoiding conflicts. -> Option A
  4. Quick Check:

    CSS Modules = Local styles [OK]
Hint: Remember CSS Modules isolate styles to components [OK]
Common Mistakes:
  • Thinking CSS Modules minify CSS automatically
  • Confusing CSS Modules with inline styles
  • Assuming CSS Modules create global styles
2. Which is the correct way to import a CSS Module file named styles.module.css in an Astro component?
easy
A. import './styles.module.css';
B. import styles from './styles.css';
C. const styles = require('./styles.module.css');
D. import styles from './styles.module.css';

Solution

  1. Step 1: Identify correct import syntax for CSS Modules

    CSS Modules require importing the CSS file as an object, typically with import styles from './filename.module.css';.
  2. Step 2: Check file extension and import style

    import styles from './styles.module.css'; uses the correct file extension and import syntax. import './styles.module.css'; imports without assigning, C uses CommonJS which is not standard in Astro, and D imports a non-module CSS file.
  3. Final Answer:

    import styles from './styles.module.css'; -> Option D
  4. Quick Check:

    Import CSS Modules as objects with .module.css [OK]
Hint: Use import with .module.css and assign to a variable [OK]
Common Mistakes:
  • Forgetting to assign import to a variable
  • Using require instead of import
  • Importing non-module CSS files as modules
3. Given the CSS Module import import styles from './button.module.css'; and the CSS file containing .primary { color: blue; }, what will be the rendered class attribute for <button class={styles.primary}>Click</button>?
medium
A. class="button_primary__abc123"
B. class="primary"
C. class="styles.primary"
D. class="undefined"

Solution

  1. Step 1: Understand CSS Modules class naming

    CSS Modules transform class names to unique strings like button_primary__abc123 to avoid conflicts.
  2. Step 2: Analyze the rendered class attribute

    Using styles.primary applies the transformed unique class name, not the original 'primary'. So the class attribute will be a unique hashed string.
  3. Final Answer:

    class="button_primary__abc123" -> Option A
  4. Quick Check:

    CSS Modules generate unique class names [OK]
Hint: CSS Modules rename classes to unique strings [OK]
Common Mistakes:
  • Expecting original class name without transformation
  • Using the variable name as class string
  • Getting undefined if import is wrong
4. What is wrong with this Astro component code using CSS Modules?
import styles from './card.module.css';

export default function Card() {
  return <div class="styles.card">Content</div>;
}
medium
A. The component must be a class, not a function.
B. The class attribute should use curly braces, not quotes.
C. The import statement is missing the .module.css extension.
D. CSS Modules cannot be used in Astro components.

Solution

  1. Step 1: Check how class names are applied with CSS Modules

    CSS Modules require using curly braces to insert the imported class object value, e.g., class={styles.card}.
  2. Step 2: Identify the error in the code

    The code uses quotes around "styles.card", which treats it as a string literal, not the variable. This causes the class to be literally 'styles.card' instead of the hashed class.
  3. Final Answer:

    The class attribute should use curly braces, not quotes. -> Option B
  4. Quick Check:

    Use curly braces to apply CSS Module classes [OK]
Hint: Use {styles.className} not "styles.className" for CSS Modules [OK]
Common Mistakes:
  • Using quotes instead of curly braces for class binding
  • Forgetting .module.css in import
  • Thinking Astro requires class components
5. How can you apply multiple CSS Module classes styles.primary and styles.rounded to a single element in an Astro component?
hard
A. <div class={styles.primary, styles.rounded}>Content</div>
B. <div class="styles.primary styles.rounded">Content</div>
C. <div class={`${styles.primary} ${styles.rounded}`}>Content</div>
D. <div class={styles.primary + styles.rounded}>Content</div>

Solution

  1. Step 1: Understand combining multiple CSS Module classes

    To apply multiple classes, you join their values as strings separated by spaces, typically using template literals or string concatenation.
  2. Step 2: Analyze each option

    <div class={`${styles.primary} ${styles.rounded}`}>Content</div> correctly uses template literals to combine classes with a space. <div class="styles.primary styles.rounded">Content</div> treats class names as literal strings, not variables. <div class={styles.primary + styles.rounded}>Content</div> concatenates without space, merging class names incorrectly. <div class={styles.primary, styles.rounded}>Content</div> uses comma which is invalid syntax.
  3. Final Answer:

    <div class={`${styles.primary} ${styles.rounded}`}>Content</div> -> Option C
  4. Quick Check:

    Join CSS Module classes with space in template literals [OK]
Hint: Use template literals with spaces to combine CSS Module classes [OK]
Common Mistakes:
  • Using quotes instead of variables for class names
  • Concatenating without spaces
  • Using commas inside class attribute
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