Bird
Raised Fist0
Tailwindmarkup~8 mins

Text decoration and underline in Tailwind - Performance & Optimization

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Performance: Text decoration and underline
LOW IMPACT
This affects the paint and composite stages of page rendering, impacting how quickly text styles appear and update.
Applying underline styles to text links
Tailwind
<a class="underline decoration-blue-500 hover:decoration-blue-700">Link</a>
Using Tailwind's text-decoration utilities leverages native underline styles, avoiding layout changes.
📈 Performance Gainsingle paint, no reflow on hover
Applying underline styles to text links
Tailwind
<a class="border-b-2 border-blue-500 hover:border-blue-700">Link</a>
Using border properties to simulate underline causes layout shifts and repaints on hover.
📉 Performance Costtriggers multiple reflows and repaints on hover
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Using border for underlineMinimalMultiple on hoverHigh due to repaint and layout shift[X] Bad
Using text-decoration underlineMinimalNone on hoverLow paint cost[OK] Good
Rendering Pipeline
Text decoration changes affect the paint and composite stages because they alter how text is visually styled without changing layout.
Paint
Composite
⚠️ BottleneckPaint stage is most expensive due to redrawing text decorations.
Core Web Vital Affected
CLS
This affects the paint and composite stages of page rendering, impacting how quickly text styles appear and update.
Optimization Tips
1Use Tailwind's underline and decoration utilities instead of borders for underlines.
2Avoid styles that change element size or position on hover to prevent layout shifts.
3Test hover effects in DevTools Performance panel to catch reflows and repaints.
Performance Quiz - 3 Questions
Test your performance knowledge
Which CSS property is best for adding an underline without causing layout shifts?
Aborder-bottom
Btext-decoration: underline
Cbox-shadow
Dpadding-bottom
DevTools: Performance
How to check: Record a performance profile while hovering over the link. Look for layout and paint events triggered by style changes.
What to look for: Check if hover triggers layout shifts or excessive paint times indicating inefficient underline styling.

Practice

(1/5)
1. Which Tailwind CSS class adds an underline to text?
easy
A. line-through
B. no-underline
C. underline
D. text-underline

Solution

  1. Step 1: Understand the purpose of each class

    The underline class adds an underline to text, while line-through crosses out text, no-underline removes underline, and text-underline is not a valid Tailwind class.
  2. Step 2: Match the class to the underline effect

    Since the question asks for adding underline, underline is the correct class.
  3. Final Answer:

    underline -> Option C
  4. Quick Check:

    Underline class = underline [OK]
Hint: Underline text with class 'underline' in Tailwind [OK]
Common Mistakes:
  • Confusing underline with line-through
  • Using no-underline to add underline
  • Assuming text-underline exists
2. Which of these is the correct Tailwind class to remove underline from a link?
easy
A. no-underline
B. line-through
C. underline
D. text-no-underline

Solution

  1. Step 1: Identify the class that removes underline

    The class no-underline removes underline decoration from text.
  2. Step 2: Verify other options

    underline adds underline, line-through crosses out text, and text-no-underline is not a valid Tailwind class.
  3. Final Answer:

    no-underline -> Option A
  4. Quick Check:

    Remove underline = no-underline [OK]
Hint: Use 'no-underline' to remove underlines in Tailwind [OK]
Common Mistakes:
  • Using underline to remove underline
  • Assuming text-no-underline exists
  • Confusing line-through with no-underline
3. What will be the visual effect of this HTML snippet?
<p class="underline line-through text-red-500">Hello</p>
medium
A. Text has no decoration but is red
B. Text is only underlined in red color
C. Text is only crossed out in red color
D. Text is underlined and crossed out in red color

Solution

  1. Step 1: Analyze the classes applied

    The classes underline and line-through add underline and line-through decorations respectively. text-red-500 colors the text red.
  2. Step 2: Understand combined text decorations

    Both underline and line-through appear simultaneously, so the text will be underlined and crossed out in red color.
  3. Final Answer:

    Text is underlined and crossed out in red color -> Option D
  4. Quick Check:

    underline + line-through + red text = underlined & crossed out red text [OK]
Hint: Multiple decorations combine visually in Tailwind [OK]
Common Mistakes:
  • Thinking only one decoration applies
  • Ignoring color class effect
  • Assuming decorations override each other
4. Identify the error in this Tailwind usage:
<span class="underline text-underline-red">Sample</span>
medium
A. text-underline-red is not a valid Tailwind class
B. underline class is misspelled
C. Missing no-underline to remove underline
D. Underline cannot be used on span

Solution

  1. Step 1: Check validity of classes

    underline is valid and adds underline. text-underline-red is not a valid Tailwind class for underline color.
  2. Step 2: Understand how to color underline

    Tailwind uses decoration-red-500 or similar for underline color, not text-underline-red.
  3. Final Answer:

    text-underline-red is not a valid Tailwind class -> Option A
  4. Quick Check:

    Invalid class name = text-underline-red [OK]
Hint: Use 'decoration-color' classes for underline color [OK]
Common Mistakes:
  • Using text-underline-red instead of decoration-red-500
  • Assuming underline color uses text- prefix
  • Thinking underline can't be on span
5. You want to create a paragraph with a green underline but no line-through. Which Tailwind classes should you use?
hard
A. underline decoration-green-600 no-line-through
B. underline decoration-green-600
C. underline text-green-600 line-through
D. underline decoration-green-600 line-through

Solution

  1. Step 1: Choose classes for underline and color

    underline adds underline, and decoration-green-600 colors the underline green.
  2. Step 2: Avoid line-through classes

    Since no line-through is wanted, do not add line-through or any similar class. There is no no-line-through class in Tailwind.
  3. Final Answer:

    underline decoration-green-600 -> Option B
  4. Quick Check:

    Underline + green decoration, no line-through [OK]
Hint: Use 'underline' + 'decoration-color' for colored underline [OK]
Common Mistakes:
  • Adding non-existent no-line-through class
  • Using text-green-600 colors text, not underline
  • Including line-through by mistake