22 CSS Breadcrumbs

Progress Track

Stepper-style breadcrumb with numbered nodes connected by a track line — great for multi-step flows.

Pure CSS MIT licensed

Progress Track the 19th of 22 designs in the 22 CSS Breadcrumbs collection. The design is implemented in pure CSS — no JavaScript required. Copy the HTML and CSS panels below into your project. Because the demo is pure CSS, it works in any framework or templating engine you happen to use. The design honours prefers-reduced-motion and uses real semantic markup, so it ships accessibility-ready out of the box.

Live preview

Open in playground

The code

<nav class="bc-19" aria-label="Breadcrumb">
  <ol class="bc-19__list">
    <li class="bc-19__item bc-19__item--done">
      <div class="bc-19__node">✓</div>
      <a class="bc-19__link" href="javascript:void(0)">Cart</a>
    </li>
    <li class="bc-19__item bc-19__item--done">
      <div class="bc-19__node bc-19__node--cur">2</div>
      <a class="bc-19__link bc-19__link--cur" aria-current="page" href="javascript:void(0)"
        >Shipping</a
      >
    </li>
    <li class="bc-19__item">
      <div class="bc-19__node bc-19__node--next">3</div>
      <span class="bc-19__label">Payment</span>
    </li>
  </ol>
</nav>
.bc-19__list {
  display: flex;
  align-items: flex-start;
  list-style: none;
  padding: 0;
  margin: 0;
  gap: 0;
}

.bc-19__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  flex: 1;
  position: relative;
}

.bc-19__item::before {
  content: "";
  position: absolute;
  top: 14px;
  left: calc(50% + 14px);
  right: calc(-50% + 14px);
  height: 2px;
  background: rgba(255, 255, 255, 0.1);
}

.bc-19__item:last-child::before {
  display: none;
}

.bc-19__item--done::before {
  background: #8b7fff;
}

.bc-19__node {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 700;
  background: rgba(255, 255, 255, 0.08);
  border: 2px solid rgba(255, 255, 255, 0.2);
  color: rgba(255, 255, 255, 0.35);
  transition: all 0.3s;
}

.bc-19__item--done .bc-19__node {
  background: #8b7fff;
  border-color: #8b7fff;
  color: #fff;
}

.bc-19__node--cur {
  background: transparent;
  border-color: #8b7fff;
  color: #8b7fff;
  box-shadow: 0 0 0 4px rgba(139, 127, 255, 0.2);
}

.bc-19__node--next {
  opacity: 0.4;
}

.bc-19__link {
  font-size: 11px;
  font-weight: 600;
  text-decoration: none;
  color: rgba(255, 255, 255, 0.55);
  text-align: center;
  transition: color 0.25s;
}

.bc-19__link--cur {
  color: #8b7fff;
  pointer-events: none;
}

.bc-19__label {
  font-size: 11px;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.2);
}

Search CodeFronts

Loading…