Bird
Raised Fist0
Tailwindmarkup~15 mins

Text decoration and underline in Tailwind - Deep Dive

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
Overview - Text decoration and underline
What is it?
Text decoration and underline are ways to change how text looks by adding lines or styles on or around the letters. Underline means drawing a line below the text, while text decoration can include lines above, below, through, or even styles like dotted or wavy lines. Tailwind CSS provides simple classes to add these decorations quickly without writing custom CSS. This helps make text stand out or show meaning, like links or emphasis.
Why it matters
Without text decoration and underline, web pages would look plain and less clear. Underlines often show clickable links, so users know where to click. Text decoration also helps highlight important parts or show errors. Tailwind makes it easy to add these styles consistently and quickly, saving time and avoiding mistakes. Without it, developers would write repetitive CSS, slowing down design and causing inconsistent looks.
Where it fits
Before learning text decoration and underline, you should know basic HTML and how CSS styles text. After this, you can learn about advanced text styling like shadows, gradients, and responsive typography. This topic fits into styling fundamentals and is a building block for making readable, accessible, and attractive web pages.
Mental Model
Core Idea
Text decoration and underline are like drawing lines or patterns on or around text to add meaning or style without changing the letters themselves.
Think of it like...
Imagine writing a note and using a highlighter or pen to draw lines under or through words to show importance or correction. The text stays the same, but the lines add extra meaning.
Text
│
├─ Underline: a line drawn below the text
├─ Overline: a line drawn above the text
├─ Line-through: a line crossing through the middle
└─ Decoration styles: solid, dotted, dashed, wavy

Tailwind classes:
.underline → underline
.overline → overline
.line-through → line-through
.decoration-solid → solid line
.decoration-dotted → dotted line
.decoration-dashed → dashed line
.decoration-wavy → wavy line
Build-Up - 7 Steps
1
FoundationBasic underline with Tailwind
🤔
Concept: Learn how to add a simple underline to text using Tailwind CSS classes.
In Tailwind, adding an underline is as easy as adding the class `underline` to your HTML element. For example:

This text is underlined.

This adds a solid line below the text, showing it is special or clickable.
Result
The text appears with a solid line directly below it in the browser.
Understanding how a single class can add underline helps you quickly style text without writing CSS rules.
2
FoundationRemoving underline with no-underline
🤔
Concept: Learn how to remove underline from text that normally has it, using Tailwind.
Sometimes links or text have underlines by default. Tailwind provides the `no-underline` class to remove them. Example: This link has no underline. This overrides the browser's default underline style.
Result
The link text appears without any underline in the browser.
Knowing how to remove underline is important for controlling text style and making clean designs.
3
IntermediateUsing line-through and overline styles
🤔Before reading on: do you think text decoration can only add underlines, or can it add other lines too? Commit to your answer.
Concept: Tailwind supports other line decorations like line-through (strikethrough) and overline to add different meanings to text.
Besides underline, Tailwind has classes: - `line-through` adds a line through the middle of the text, often used to show deletion or discount. - `overline` adds a line above the text, less common but useful for special emphasis. Example:

This text is crossed out.

This text has a line above.

Result
The first text shows a line crossing through it; the second shows a line above the text.
Understanding different line decorations expands your ability to communicate meaning visually with text.
4
IntermediateChanging decoration style with decoration utilities
🤔Before reading on: do you think underline lines are always solid, or can they have different styles like dotted or wavy? Commit to your answer.
Concept: Tailwind lets you change the style of text decoration lines, such as making them dotted, dashed, or wavy.
By default, underline and other lines are solid. Tailwind provides classes like: - `decoration-solid` (default solid line) - `decoration-dotted` (dots instead of a solid line) - `decoration-dashed` (dashes) - `decoration-wavy` (wavy line) Example:

Dotted underline

Wavy underline

Result
The first text has a dotted line below; the second has a wavy line below.
Knowing how to customize line style helps create unique and accessible text designs.
5
IntermediateControlling decoration color and thickness
🤔
Concept: Tailwind allows you to change the color and thickness of text decoration lines separately from the text color.
You can use `decoration-{color}` classes to set the line color, for example `decoration-red-500`. To change thickness, use `decoration-[length]` with arbitrary values, e.g., `decoration-2` for 2px thickness. Example:

Blue thick underline

Result
The underline appears blue and thicker than default under the text.
Separating decoration color and thickness from text color gives precise control over text styling.
6
AdvancedCombining decorations with hover and focus states
🤔Before reading on: do you think text decoration can change dynamically on user actions like hover or focus? Commit to your answer.
Concept: Tailwind supports changing text decoration styles on user interactions like hover or focus to improve usability and feedback.
You can add decoration classes with state prefixes: - `hover:underline` adds underline on mouse hover - `focus:no-underline` removes underline when focused Example: Interactive link
Result
The link has no underline normally, but underlines on hover and shows a wavy line on keyboard focus.
Using decoration with interaction states improves accessibility and user experience.
7
ExpertUnderstanding browser support and accessibility
🤔Before reading on: do you think all decoration styles like wavy lines are supported equally across browsers? Commit to your answer.
Concept: Not all text decoration styles are supported the same in every browser, and some can affect accessibility if used improperly.
While solid, dotted, and dashed lines are widely supported, wavy lines may not appear in older browsers. Also, excessive or unclear decorations can confuse screen readers or users with visual impairments. Best practice is to test decorations across browsers and ensure they convey clear meaning. Tailwind uses standard CSS properties like `text-decoration-line`, `text-decoration-style`, and `text-decoration-color` under the hood.
Result
You understand that some decorations might look different or fail in some browsers, and that accessibility must be considered.
Knowing browser limits and accessibility ensures your text decorations enhance rather than harm user experience.
Under the Hood
Text decoration in CSS works by drawing lines on or around the text glyphs without changing the text content. The browser paints these lines using properties like `text-decoration-line` (which lines to draw), `text-decoration-style` (solid, dotted, etc.), and `text-decoration-color` (line color). Tailwind CSS classes map directly to these CSS properties, allowing quick utility-based styling. The underline is drawn below the text baseline, line-through crosses the middle, and overline is above the text. These decorations are part of the text rendering layer, separate from background or border layers.
Why designed this way?
CSS text decoration was designed to separate content from presentation, letting authors add meaning or style without altering text. The line styles and colors were added later to give designers more control. Tailwind builds on this by providing atomic classes for each property, enabling fast, consistent styling without writing custom CSS. This approach avoids bloated stylesheets and encourages reuse. Alternatives like using borders or backgrounds for underlines exist but are less semantic and harder to maintain.
Text Element
┌─────────────────────────────┐
│                             │
│   Glyphs (letters)          │
│                             │
│   ──────────────── ← underline (text-decoration-line)
│                             │
│   ──────────────── ← line-through
│                             │
│   ──────────────── ← overline
│                             │
└─────────────────────────────┘

Tailwind classes → CSS properties
underline       → text-decoration-line: underline;
line-through    → text-decoration-line: line-through;
decoration-dotted → text-decoration-style: dotted;
decoration-red-500 → text-decoration-color: #ef4444;
Myth Busters - 3 Common Misconceptions
Quick: Does the underline color always match the text color by default? Commit yes or no.
Common Belief:The underline color is always the same as the text color and cannot be changed separately.
Tap to reveal reality
Reality:In modern CSS and Tailwind, the underline color can be set independently from the text color using `text-decoration-color` or Tailwind's `decoration-{color}` classes.
Why it matters:Believing underline color is fixed limits design creativity and can cause developers to write extra CSS hacks to change underline color.
Quick: Can you add multiple text decorations like underline and line-through at the same time? Commit yes or no.
Common Belief:You can only have one text decoration line at a time, like either underline or line-through, but not both together.
Tap to reveal reality
Reality:CSS supports multiple text decoration lines simultaneously by listing them, e.g., `underline line-through`. Tailwind does not provide a direct class for multiple lines but you can extend it or write custom CSS.
Why it matters:Knowing this allows advanced styling like showing both underline and strikethrough for special effects or states.
Quick: Does adding underline always improve accessibility and clarity? Commit yes or no.
Common Belief:Underlining text always makes it clearer and better for users.
Tap to reveal reality
Reality:Underlines are commonly used for links, but overusing or misusing them can confuse users or reduce readability, especially if color contrast is poor or decorations overlap.
Why it matters:Misusing underline can harm user experience and accessibility, so designers must use it thoughtfully.
Expert Zone
1
Tailwind's text decoration utilities rely on CSS properties that can be combined with other text styling like shadows and transforms, but some combinations may cause unexpected visual glitches.
2
The `decoration-skip-ink` CSS property, which Tailwind supports via `decoration-skip-ink`, controls whether underlines skip descenders like 'g' or 'y' for cleaner appearance, a subtle detail often overlooked.
3
When using arbitrary values for decoration thickness or color in Tailwind, it is important to ensure consistency across browsers as some older browsers may ignore or render them differently.
When NOT to use
Avoid using text decoration utilities for complex text effects like animated underlines or multi-layered decorations; instead, use SVG or custom CSS animations. Also, do not rely solely on underline to indicate links for accessibility; combine with color and focus styles.
Production Patterns
In production, Tailwind text decoration classes are often combined with responsive prefixes (e.g., `sm:underline`) to control decoration on different screen sizes. They are also used with state variants like `hover:underline` and `focus:decoration-wavy` to improve interactivity and accessibility.
Connections
CSS Box Model
Text decoration lines are rendered outside the text glyphs but inside the element's box, relating to how the box model controls layout and spacing.
Understanding the box model helps explain why text decoration lines do not affect element size or layout, preventing layout shifts.
Typography in Print Design
Text decoration in web mimics traditional print techniques like underlining or striking through text for emphasis or correction.
Knowing print typography traditions helps web designers use text decoration meaningfully and avoid overuse.
Human Visual Perception
Text decoration uses lines to guide the eye and convey meaning, leveraging how humans perceive shapes and contrasts.
Understanding visual perception principles helps create accessible and effective text decorations that improve readability.
Common Pitfalls
#1Using underline on all clickable text without considering color contrast or context.
Wrong approach:Link
Correct approach:Link
Root cause:Poor color choice makes underline hard to see, reducing usability and accessibility.
#2Trying to change underline thickness by using border-bottom instead of text decoration.
Wrong approach:

Text

Correct approach:

Text

Root cause:Using borders for underline breaks semantics and can cause layout issues.
#3Overusing multiple text decorations on the same text causing clutter and confusion.
Wrong approach:

Confusing text

Correct approach:

Clear emphasis

Root cause:Lack of design clarity and understanding of decoration purpose leads to poor readability.
Key Takeaways
Text decoration and underline add lines to text to convey meaning or style without changing the text itself.
Tailwind CSS provides simple utility classes to add, remove, and customize text decorations quickly and consistently.
You can control not just the presence of underline but also its style, color, and thickness separately from the text color.
Using decoration with interaction states like hover and focus improves user experience and accessibility.
Be mindful of browser support and accessibility when applying text decorations to ensure clear and inclusive designs.

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