# How normalize.css Handles `abbr[title]` Styling for Cross-Browser Consistency

> Learn how normalize.css ensures consistent dotted underline for abbr[title] elements, removing browser inconsistencies for a unified look.

- Repository: [Nicolas Gallagher/normalize.css](https://github.com/necolas/normalize.css)
- Tags: deep-dive
- Published: 2026-03-07

---

**Normalize.css removes the inconsistent default bottom border from `abbr[title]` elements and enforces a reliable dotted underline across all browsers.**

The [`necolas/normalize.css`](https://github.com/necolas/normalize.css/blob/main/necolas/normalize.css) repository provides a modern, HTML5-ready alternative to CSS resets by preserving useful defaults while normalizing cross-browser inconsistencies. One specific normalization target is the `<abbr>` element with a title attribute, which receives conflicting default styles depending on the browser engine and version.

## The Browser Inconsistency Problem

Without normalization, `abbr[title]` elements render differently across browsers, creating visual inconsistency in typography.

- **Older Chrome versions (57 and earlier)** displayed a faint gray **bottom border** instead of the traditional underline
- **Internet Explorer, Edge, and Safari** handled text decoration with varying underline styles
- These inconsistencies interfered with design systems requiring predictable abbreviation styling

The conflicting defaults could cause unexpected layout shifts or visual cues that confused users expecting the standard dotted underline convention for abbreviations.

## How normalize.css Normalizes `abbr[title]`

In [`normalize.css`](https://github.com/necolas/normalize.css/blob/main/normalize.css) at **lines 85–89**, the stylesheet applies a three-rule declaration block that standardizes abbreviation styling:

```css
/* 1. Remove the bottom border in Chrome 57-
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */
abbr[title] {
  border-bottom: none;           /* 1 */
  text-decoration: underline;   /* 2 */
  text-decoration: underline dotted; /* 2 */
}

```

### The CSS Rules Explained

Each declaration serves a specific purpose in the normalization strategy:

- **`border-bottom: none;`** — Eliminates the default gray bottom border that Chrome 57 and earlier rendered for elements matching `abbr[title]`, preventing unwanted spacing and visual noise.

- **`text-decoration: underline;`** — Establishes a fallback underline to ensure the element receives some form of decoration in browsers that require explicit declaration.

- **`text-decoration: underline dotted;`** — Overwrites the previous declaration to force the traditional *dotted* underline, matching the semantic convention for abbreviations while overriding any browser-specific defaults.

This progressive enhancement approach ensures that even if a browser does not support `dotted` underline syntax, the element still receives a basic underline before the more specific style applies.

## Practical Code Examples

### Default Browser Rendering (Without normalize.css)

Viewing this markup in Chrome 56 or earlier reveals the inconsistent border styling:

```html
<!DOCTYPE html>
<html lang="en">
<head>
  <title>abbr default styling</title>
</head>
<body>
  <p>The <abbr title="World Wide Web">WWW</abbr> uses inconsistent styling.</p>
</body>
</html>

```

In affected browsers, "WWW" appears with a thin gray bottom border rather than the expected dotted underline, while other browsers may show no decoration or solid underlines.

### Normalized Rendering (With normalize.css)

Including the normalize.css stylesheet standardizes the appearance:

```html
<!DOCTYPE html>
<html lang="en">
<head>
  <title>abbr normalized styling</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css">
</head>
<body>
  <p>The <abbr title="World Wide Web">WWW</abbr> uses consistent styling.</p>
</body>
</html>

```

All modern browsers now render the abbreviation with a uniform dotted underline, and the unwanted bottom border is completely removed.

### Customizing the Appearance

You can override the normalized base if your design system requires different abbreviation styling:

```css
/* Custom style following the normalized base */
abbr[title] {
  text-decoration: underline solid;
  text-decoration-color: #0066cc;
}

```

This maintains the cross-browser reliability of normalize.css while adapting the visual presentation to specific brand requirements.

## Summary

- **Source location**: The `abbr[title]` normalization rules reside in [`normalize.css`](https://github.com/necolas/normalize.css/blob/main/normalize.css) at lines 85–89.
- **Primary fix**: `border-bottom: none` removes the Chrome 57- default border that caused visual inconsistency.
- **Standardization**: Double `text-decoration` declarations ensure a dotted underline appears consistently across Chrome, Edge, IE, Opera, and Safari.
- **Maintainability**: The explicit styling prevents accidental layout shifts while preserving semantic clarity for abbreviations.

## Frequently Asked Questions

### Why does normalize.css use two text-decoration declarations?

The dual declaration pattern provides progressive enhancement. `text-decoration: underline` serves as a fallback for browsers that may not support the `dotted` keyword, while `text-decoration: underline dotted` immediately overwrites it in capable browsers to achieve the standard abbreviation appearance.

### Which browsers are affected by the border-bottom fix?

The `border-bottom: none` declaration specifically targets **Chrome 57 and earlier versions**, which rendered a gray bottom border on `abbr[title]` elements instead of the traditional underline. Modern Chrome versions follow the standard, but the rule remains for backward compatibility.

### Can I override the dotted underline with a different style?

Yes, you can override the normalize.css defaults by declaring more specific CSS rules for `abbr[title]`. Import your custom stylesheet after normalize.css or use higher-specificity selectors to change the underline style to solid, dashed, or remove it entirely based on your design requirements.

### Does normalize.css affect abbr elements without a title attribute?

No, the selector specifically targets `abbr[title]` using an attribute selector. Bare `<abbr>` elements without the title attribute remain unaffected by these normalization rules, allowing them to inherit default browser styling or your custom base styles.