:first-of-type

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

The :first-of-typeCSSpseudo-class represents the first element of its type (tag name) among a group of sibling elements.

Try it

dt { font-weight: bold; } dd { margin: 3px; } dd:first-of-type { border: 2px solid orange; } 
<dl> <dt>Vegetables:</dt> <dd>1. Tomatoes</dd> <dd>2. Cucumbers</dd> <dd>3. Mushrooms</dd> <dt>Fruits:</dt> <dd>4. Apples</dd> <dd>5. Mangos</dd> <dd>6. Pears</dd> <dd>7. Oranges</dd> </dl> 

Syntax

css
:first-of-type { /* ... */ } 

Examples

Styling the first paragraph

HTML

html
<h2>Heading</h2> <p>Paragraph 1</p> <p>Paragraph 2</p> 

CSS

css
p:first-of-type { color: red; font-style: italic; } 

Result

Nested elements

This example shows how nested elements can also be targeted. Note that the universal selector (*) is implied when no type selector is written.

HTML

html
<article> <div>This `div` is first!</div> <div>This <span>nested `span` is first</span>!</div> <div> This <em>nested `em` is first</em>, but this <em>nested `em` is last</em>! </div> <div>This <span>nested `span` gets styled</span>!</div> <p>This `p` qualifies!</p> <div>This is the final `div`.</div> </article> 

CSS

css
article :first-of-type { background-color: pink; } 

Result

Specifications

Specification
Selectors Level 4
# first-of-type-pseudo

Browser compatibility

See also