Advent

Day 19: Pagination 📖

Pagination helps users browse through the sequence of related content.

The example component is visible below.



A few notes about this pagination component:

  • CSS Variables are used for colors,
  • CSS Flexbox is used for layout,
  • the gap property is used to add spacing between flex items,
  • the advent-pagination a[aria-current="true"] selector is used to target the current pagination item,
  • aria-label and aria-current attributes are used to make the component accessible.

The code:

<nav class="advent-pagination" aria-label="Pagination navigation">
  <ul>
    <li><a href="#page-1" aria-label="Go to first page">First</a></li>
    <li><a href="#page-1" aria-label="Go to page 2">2</a></li>
    <li><a href="#page-3" aria-label="Current page, page 3" aria-current="true">3</a></li>
    <li><a href="#page-4" aria-label="Go to page 4">4</a></li>
    <li><a href="#page-100" aria-label="Go to last page">Last</a></li>
  </ul>
</nav>
.advent-pagination {
  --color-xmas-alpha: #f7efef;
  --color-xmas-beta: #d72621;
  --color-xmas-gamma: #639565;
}

.advent-pagination ul {
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1px;
}

advent-pagination a {
  background-color: var(--color-xmas-alpha);
  color: var(--color-xmas-beta);
  border: 1px solid var(--color-xmas-beta);
  border-radius: .25em;
  display: block;
  padding: .25em 1em;
  text-decoration: none;
  cursor: pointer;
}

advent-pagination a:hover,
advent-pagination a:focus,
advent-pagination a:active {
  background-color: var(--color-xmas-beta);
  color: var(--color-xmas-alpha);
}

.advent-pagination li:first-of-type a {
  border-top-left-radius: 1.5em;
  border-bottom-left-radius: 1.5em;
  padding-left: 1.5em;
}

.advent-pagination li:last-of-type a {
  border-top-right-radius: 1.5em;
  border-bottom-right-radius: 1.5em;
  padding-right: 1.5em;
}

advent-pagination a[aria-current="true"] {
  border-width: 3px;
}

Advent of UI components 🎄

Check other UI components.

Day 24: Details 🎹

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 24: Details.

Day 23: Radio button 📱

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 23: Radio button.

Day 22: Checkbox 🧦

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 22: Checkbox.

Day 21: Notification 🤫

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 21: Notification.

Day 20: Code block 💻

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 20: Code block.

Day 18: Social share 🔗

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 18: Social share.

Day 17: Card 🎴

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 17: Card.

Day 16: Table 🎶

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 16: Table.

Day 15: Breadcrumb 🍞

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 15: Breadcrumb.

Day 14: Blockquote 💬

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 14: Blockquote.

Day 13: List 🗒️

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 13: List.

Day 12: Figure 🖼️

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 12: Figure.

Day 11: Video embed 📺

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 11: Video embed.

Day 10: Footer 👇

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 10: Footer.

Day 9: Header ☝️

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 9: Header.

Day 8: Hero 🦸‍♂️

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 8: Hero.

Day 7: Intro 💬

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 7: Intro.

Day 6: Horizontal rule 〰️

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 6: Horizontal rule.

Day 5: Split 💔

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 5: Split.

Day 4: Banner 🚩

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 4: Banner.

Day 3: Gallery 🍿

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 3: Gallery.

Day 2: Tag 🎁

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 2: Tag.

Day 1: Button 🎅

During every day of the Advent of UI components, I am showcasing a new UI Component built with HTML, CSS, and JavaScript. Day 1: Button.