Breadcrumb

브레드크럼

A ">"-separated trail showing where the current page sits in the site's hierarchy.

Also known as: Breadcrumb trailPath indicator
···
html
<nav aria-label="breadcrumb" class="bc">
  <ol id="bcl">
    <li><a href="#">홈</a></li>
    <li><a href="#">도서</a></li>
    <li><a href="#">소설</a></li>
    <li aria-current="page">82년생 김지영</li>
  </ol>
</nav>
css
.bc ol{list-style:none;display:flex;flex-wrap:wrap;gap:0;margin:0;padding:0;font-size:12px;max-width:min(280px,90%)}
.bc li{display:flex;align-items:center;color:var(--muted);opacity:.25;transition:opacity .3s}
.bc li[data-lit]{opacity:1}
.bc li:not(:first-child)::before{content:"›";margin:0 6px;color:var(--line)}
.bc a{color:var(--muted);text-decoration:none}
.bc li[aria-current] {color:var(--fg);font-weight:600}
js
const items = [...document.querySelectorAll('.bc li')];
let n = 1;
function paint() { items.forEach((li, i) => li.toggleAttribute('data-lit', i < n)); }
paint();
setInterval(() => { n = n >= items.length ? 1 : n + 1; paint(); }, 900);

Put an ordered list (<ol>) inside <nav aria-label="breadcrumb">, and leave the last item (the current page) unlinked with only aria-current="page". Each separator (">") should be decorative — a CSS ::before, say — so a screen reader doesn't read it aloud.

The difference from a stepper is directionality, covered above: a breadcrumb is a hierarchy path you've already traveled and can click back up at any point, while a stepper is a process moving forward through a fixed order. The difference from tabs is the relationship shown — tabs move between sibling content at the same level, while a breadcrumb shows a parent-child hierarchy.

When depth gets very deep (five levels or more), collapsing the middle items behind an "…" is a common pattern.