Skip to content
Design System
  • Home
  • Settings
  • Styles
  • Layouts
  • Components
  • Scripts
  • Templates
  • Avatars
  • Buttons
  • Forms
  • Forms: errors
  • Forms: validation
  • Hide and show items inclusively
  • Links
  • Lists
  • SVG icons
  • SVG images
  • Tables
  • Typography
  • Utilities
  • Vertical spacing

Lists

Use lists to make blocks of text easier to read, and to break information into manageable chunks.

¶Unordered lists

Open this Unordered list with markers in a new tab

HTML:

<ul>
	<li>Level 1 list item 1</li>
	<li>Level 1 list item 2</li>
	<li>Level 1 list item 3
		<ul>
			<li>Level 2 list item 1</li>
			<li>Level 2 list item 2</li>
			<li>Level 2 list item 3</li>
		</ul>
	</li>
	<li>Level 1 list item 4</li>
	<li>Level 1 list item 5</li>
	<li>Level 1 list item 6</li>
</ul>

¶Ordered lists

Open this Ordered list with markers in a new tab

HTML:

<ol>
	<li>Level 1 list item 1</li>
	<li>Level 1 list item 2</li>
	<li>Level 1 list item 3
		<ol type="a">
			<li>Level 2 list item 1</li>
			<li>Level 2 list item 2</li>
			<li>Level 2 list item 3</li>
		</ol>
	</li>
	<li>Level 1 list item 4</li>
	<li>Level 1 list item 5</li>
	<li>Level 1 list item 6</li>
</ol>

¶Using a counter for decimal numbering

Adding the .counter class to an ordered list will ensure that any nested ordered lists are displayed as decimals, with the first digit corresponding to the number of the parent list item:

Open this Ordered list with a counter in a new tab

HTML:

<ol class="counter">
    <li>Level 1 list item 1</li>
    <li>Level 1 list item 2</li>
    <li>Level 1 list item 3
        <ol>
            <li>Level 2 list item 1</li>
            <li>Level 2 list item 2</li>
            <li>Level 2 list item 3</li>
        </ol>
    </li>
    <li>Level 1 list item 4</li>
    <li>Level 1 list item 5</li>
    <li>Level 1 list item 6</li>
</ol>

¶Considerations

The counter supports the "start" and "reversed" attributes on the ordered list, but does not support the "type" attribute, e.g. for roman numerals. Ordered lists with the .counter class will always use decimal numbers for the markers.

¶Clean list

Adding the .clean-list class to an unordered or ordered list will remove the list markers and all margin and padding:

Open this Unordered list without bullets in a new tab

HTML:

<ul class="clean-list">
	<li>Level 1 list item 1</li>
	<li>Level 1 list item 2</li>
	<li>Level 1 list item 3</li>
	<li>Level 1 list item 4</li>
	<li>Level 1 list item 5</li>
	<li>Level 1 list item 6</li>
</ul>

¶Considerations

As noted by Scott O'Hara, the CSS used for the .clean-list class to remove the markers also removes the list semantics in Webkit browsers. If the list semantics are important for your users, add role="list" to restore them.

¶Description lists

Open this Description list in a new tab

HTML:

<dl>
	<dt>Term</dt>
	<dd>Description</dd>
	<dt>Term</dt>
	<dd>Description</dd>
	<dt>Term</dt>
	<dd>Description</dd>
	<dt>Term</dt>
	<dd>Description</dd>
</dl>

¶Tabulated description lists

For a more tabulated style, add the .grid class to the <dl> element:

Open this Description list with grid styling in a new tab

HTML:

<dl class="grid">
	<dt>Term</dt>
	<dd>Description</dd>
	<dt>Term</dt>
	<dd>Description</dd>
	<dt>Term</dt>
	<dd>Description</dd>
	<dt>Term</dt>
	<dd>Description</dd>
</dl>

¶Inline description lists

To align the terms and the descriptions separated with a comma, add the .inline class to the <dl> element and a <div> around the <dt>/<dd>:

Open this Inline description list in a new tab

HTML:

<dl class="inline">
	<div>
		<dt>Term</dt>
		<dd>Description</dd>
		<dd>Other description</dd>
	</div>
	<div>
		<dt>Term</dt>
		<dd>Description</dd>
		<dd>Other description</dd>
	</div>
	<div>
		<dt>Term</dt>
		<dd>Description</dd>
		<dd>Other description</dd>
	</div>
	<div>
		<dt>Term</dt>
		<dd>Description</dd>
		<dd>Other description</dd>
	</div>
</dl>

Copyright © 2025 W3C - generated 10 Jan 2025, 12:43:28 UTC

Feedback is welcome and can be submitted as a GitHub issue.