Bird
Raised Fist0
Tailwindmarkup~10 mins

@apply for extracting patterns in Tailwind - Browser Rendering Trace

Choose your learning style10 modes available
Render Flow - @apply for extracting patterns
Read CSS file
↓
Find @apply directive
↓
Extract utility classes
↓
Replace @apply with expanded CSS rules
↓
Generate final CSS
↓
Browser applies styles to HTML elements
↓
Render styled elements
The browser reads the CSS with @apply, Tailwind expands the utility classes into actual CSS rules, then the browser applies these styles to the HTML elements and renders the styled page.
Render Steps - 3 Steps
Code Added:<button class="btn-primary">Click me</button>
Before
[ ]
(No visible button)
→
After
[ Click me ]
(Button with default browser style)
Adding the button element creates a clickable area with default browser styles.
🔧 Browser Action:Creates DOM node and applies default user agent styles
Code Sample
A blue button with white bold text, padding, and rounded corners styled using @apply to reuse Tailwind utilities.
Tailwind
<button class="btn-primary">Click me</button>
Tailwind
@tailwind base;
@tailwind components;
@tailwind utilities;

.btn-primary {
  @apply bg-blue-600 text-white font-bold py-2 px-4 rounded;
}
Render Quiz - 3 Questions
Test your understanding
After applying step 2, what visual change do you see on the button?
AButton text becomes bold
BButton corners become rounded
CButton background changes to blue
DButton text color changes to white
Common Confusions - 3 Topics
Why doesn't @apply work with arbitrary values like bg-[#123456]?
@apply only works with predefined Tailwind utility classes, not arbitrary values. You must use standard utilities or write custom CSS.
💡 Use only official utility class names inside @apply.
Why does adding @apply sometimes not change the button style?
If the CSS file is not processed by Tailwind or PostCSS, @apply won't expand. Make sure your build setup supports Tailwind processing.
💡 Check your build tools to ensure Tailwind CSS is active.
Why can't I use @apply with pseudo-classes like hover:bg-blue-700?
@apply does not support pseudo-classes directly. You need to write separate CSS rules for hover states.
💡 Use normal CSS selectors for pseudo-classes, not @apply.
Property Reference
PropertyValue AppliedVisual EffectCommon Use
bg-blue-600background-color: #2563eb;Changes background to blueButton backgrounds, highlights
text-whitecolor: #ffffff;Makes text whiteText color for contrast
font-boldfont-weight: 700;Makes text boldEmphasizing text
py-2padding-top & bottom: 0.5rem;Adds vertical paddingSpacing inside buttons or blocks
px-4padding-left & right: 1rem;Adds horizontal paddingSpacing inside buttons or blocks
roundedborder-radius: 0.25rem;Rounds cornersSoftening edges of boxes or buttons
Concept Snapshot
@apply lets you reuse Tailwind utility classes inside your CSS. It expands utilities like bg-blue-600, text-white, font-bold into real CSS. Use it to keep your CSS DRY and consistent. @apply works only with standard utilities, not arbitrary values or pseudo-classes. Make sure your build setup processes Tailwind CSS for @apply to work.

Practice

(1/5)
1. What is the main purpose of using @apply in Tailwind CSS?
easy
A. To create animations in Tailwind CSS
B. To add JavaScript functionality to Tailwind classes
C. To import external CSS files into Tailwind
D. To combine multiple utility classes into one reusable custom class

Solution

  1. Step 1: Understand what @apply does

    @apply lets you write multiple Tailwind utility classes inside a CSS rule to create a single custom class.
  2. Step 2: Identify the main use

    This helps reuse styles and keep code tidy by combining utilities into one class.
  3. Final Answer:

    To combine multiple utility classes into one reusable custom class -> Option D
  4. Quick Check:

    @apply combines utilities = C [OK]
Hint: Remember: @apply bundles utilities into one class [OK]
Common Mistakes:
  • Thinking @apply adds JavaScript
  • Confusing @apply with animation creation
  • Assuming @apply imports CSS files
2. Which of the following is the correct syntax to use @apply inside a CSS file?
easy
A. .btn { @apply text-white bg-blue-500 px-4 py-2; }
B. .btn { apply: text-white bg-blue-500 px-4 py-2; }
C. .btn { @use text-white bg-blue-500 px-4 py-2; }
D. .btn { apply(@text-white, @bg-blue-500); }

Solution

  1. Step 1: Recall the correct @apply syntax

    The correct way is to write @apply followed by utility classes inside a CSS rule block.
  2. Step 2: Check each option

    Only .btn { @apply text-white bg-blue-500 px-4 py-2; } uses @apply correctly with utility classes separated by spaces.
  3. Final Answer:

    .btn { @apply text-white bg-blue-500 px-4 py-2; } -> Option A
  4. Quick Check:

    Correct @apply syntax = A [OK]
Hint: Look for '@apply' keyword followed by utilities inside braces [OK]
Common Mistakes:
  • Using 'apply:' instead of '@apply'
  • Using '@use' or other incorrect keywords
  • Trying to call @apply like a function
3. Given this CSS code using @apply:
.card {
  @apply p-6 bg-white rounded-lg shadow-md;
}
What visual styles will the .card class have?
medium
A. No padding, transparent background, rounded corners, and large shadow
B. Padding of 6px, black background, square corners, and no shadow
C. Padding of 1.5rem, white background, rounded corners, and medium shadow
D. Padding of 6rem, gray background, rounded corners, and small shadow

Solution

  1. Step 1: Understand each utility class

    p-6 means padding 1.5rem, bg-white sets white background, rounded-lg adds large rounded corners, shadow-md adds medium shadow.
  2. Step 2: Match these styles to options

    Padding of 1.5rem, white background, rounded corners, and medium shadow correctly describes these styles. Others have wrong padding sizes or colors.
  3. Final Answer:

    Padding of 1.5rem, white background, rounded corners, and medium shadow -> Option C
  4. Quick Check:

    p-6 + bg-white + rounded-lg + shadow-md = A [OK]
Hint: Know Tailwind spacing and color names to decode @apply output [OK]
Common Mistakes:
  • Confusing padding units (px vs rem)
  • Mixing up background colors
  • Misunderstanding shadow sizes
4. What is wrong with this CSS using @apply?
.btn {
  @apply text-white bg-blue-500 px-4 py-2;
  @apply rounded-lg;
  color: red;
}
medium
A. The syntax is invalid because @apply must be last
B. Multiple @apply statements should be combined into one
C. The color property conflicts with @apply and causes error
D. You cannot use @apply with padding classes

Solution

  1. Step 1: Check usage of multiple @apply

    Tailwind allows multiple @apply but best practice is to combine them for clarity and to avoid duplication.
  2. Step 2: Analyze other options

    @apply works with padding, color property is valid CSS and does not cause error, and @apply can be anywhere inside the rule.
  3. Final Answer:

    Multiple @apply statements should be combined into one -> Option B
  4. Quick Check:

    Combine @apply classes for cleaner CSS = D [OK]
Hint: Combine all utilities in one @apply for neat CSS [OK]
Common Mistakes:
  • Thinking @apply can't be used multiple times
  • Assuming color property conflicts with @apply
  • Believing @apply must be last in CSS block
5. You want to create a reusable button style in Tailwind using @apply that has white text, blue background, padding, rounded corners, and a hover effect that darkens the background. Which CSS snippet correctly achieves this?
hard
A. .btn { @apply text-white bg-blue-500 px-4 py-2 rounded; &:hover { @apply bg-blue-700; } }
B. .btn { @apply text-white bg-blue-500 px-4 py-2 rounded hover:bg-blue-700; }
C. .btn { @apply text-white bg-blue-500 px-4 py-2 rounded; :hover { @apply bg-blue-700; } }
D. .btn { @apply text-white bg-blue-500 px-4 py-2 rounded; hover: { @apply bg-blue-700; } }

Solution

  1. Step 1: Understand hover styling with @apply

    To apply hover styles with @apply, you must nest inside a CSS hover selector like &:hover in your CSS.
  2. Step 2: Check each option's hover syntax

    .btn { @apply text-white bg-blue-500 px-4 py-2 rounded; &:hover { @apply bg-blue-700; } } correctly uses &:hover { @apply bg-blue-700; }. .btn { @apply text-white bg-blue-500 px-4 py-2 rounded hover:bg-blue-700; } tries to use hover:bg-blue-700 inside @apply which is invalid. Options C and D have incorrect hover selector syntax.
  3. Final Answer:

    .btn { @apply text-white bg-blue-500 px-4 py-2 rounded; &:hover { @apply bg-blue-700; } } -> Option A
  4. Quick Check:

    Use &:hover with @apply for hover styles = B [OK]
Hint: Use &:hover { @apply ... } for hover styles in CSS [OK]
Common Mistakes:
  • Trying to use hover: prefix inside @apply
  • Using :hover without & in nested CSS
  • Incorrect hover selector syntax causing errors
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