Refactor: sémantique nav Portfolio — ul > li > button

- nav > ul[role=list] > li > button
- aria-current sur l'item actif
- aria-label={project.title} sur le button (le texte visible est le numéro)
- alt="" sur la vignette (décorative, le titre est porté par aria-label)
- aria-hidden sur le numéro (redondant avec aria-label)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
isUnknown 2026-03-06 17:32:22 +01:00
parent 0b19589288
commit 594d53f50e

View file

@ -122,16 +122,22 @@
<!-- Sidebar navigation (extrême droite) --> <!-- Sidebar navigation (extrême droite) -->
<nav class="portfolio-nav" aria-label="Projets"> <nav class="portfolio-nav" aria-label="Projets">
<ul role="list">
{#each projects as project, i} {#each projects as project, i}
<li>
<button <button
class="portfolio-nav-item" class="portfolio-nav-item"
class:active={i === currentIndex} class:active={i === currentIndex}
aria-current={i === currentIndex ? 'true' : undefined}
aria-label={project.title}
onclick={() => { currentIndex = i; setAnchor(i) }} onclick={() => { currentIndex = i; setAnchor(i) }}
> >
<img src={project.thumbnail} alt={project.title} /> <img src={project.thumbnail} alt="" />
<span class="portfolio-nav-number">{String(i + 1).padStart(2, '0')}</span> <span class="portfolio-nav-number" aria-hidden="true">{String(i + 1).padStart(2, '0')}</span>
</button> </button>
</li>
{/each} {/each}
</ul>
</nav> </nav>
</section> </section>
@ -182,6 +188,7 @@
.portfolio-text h2 { .portfolio-text h2 {
font-size: var(--font-size-title-main); font-size: var(--font-size-title-main);
font-weight: 700;
text-transform: uppercase; text-transform: uppercase;
line-height: 1.1; line-height: 1.1;
} }
@ -215,6 +222,11 @@
} }
/* Sidebar navigation */ /* Sidebar navigation */
.portfolio-nav ul {
list-style: none;
display: contents;
}
.portfolio-nav { .portfolio-nav {
grid-area: 4/17 / span 14 / span 4; grid-area: 4/17 / span 14 / span 4;
padding-right: 8rem; padding-right: 8rem;