Aufbau einer React-Komponente
Meine Vorstellung davon, wie jede React-Komponente aussehen sollte
421
8 min.
Der SSBM-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Burger-Menü fest.
Das mobile Menü muss unter Berücksichtigung der korrekten Positionierung und Struktur der Elemente aufgebaut werden. Dazu werden position: fixed;, block-size: 100dvb; und inline-size: 100%; verwendet, damit das Menü den Bildschirm unter Berücksichtigung der Browserleisten und-felder vollständig ausfüllt. Ein Overlay als separates Element mit position: fixed; wird verwendet, um die Seite zu überlagern und das Menü bei einem Klick auszublenden.
Für die Animation des Öffnens/Schließens verwenden Sie einen Versatz über die Eigenschaften inset-inline-start, inset-inline-end, inset-block-start und inset-block-end anstelle von transform: translateX/Y();, wenn ein einfaches Ein- und Ausblenden gewünscht ist. Außerdem sollte das Menü nicht über die Grenzen des viewport hinausragen, insbesondere auf kleinen Bildschirmen:
<button class="burger-button">☰</button>
<div class="menu">
<div class="menu__overlay"></div>
<nav>
<ul>
<li><a href="/">Startseite</a></li>
<li><a href="/about">Über uns</a></li>
<li><a href="/contact">Kontakt</a></li>
</ul>
</nav>
</div>.menu {
position: fixed;
inset-block-start: 0;
inset-inline-start: -100%;
inline-size: 100%;
block-size: 100dvb;
background: white;
transition: inset-inline-start 0.3s;
}
.menu.active {
inset-inline-start: 0;
}
.menu__overlay {
position: fixed;
inset: 0;
inline-size: 100%;
block-size: 100%;
background: rgba(0,0,0,0.5);
opacity: 0;
visibility: hidden;
transition: opacity 0.3s, visibility 0.3s;
}
.menu.active .menu__overlay {
opacity: 1;
visibility: visible;
}Die Hamburger-Schaltfläche sollte über aria-label und aria-expanded verfügen, um den Status des Menüs (geöffnet/geschlossen) widerzuspiegeln:
<button class="burger-button" aria-label="Menü öffnen" aria-expanded="false">☰</button>Das Menü wird durch einen Klick auf die Hamburger-Schaltfläche, die Auswahl eines Menüpunkts oder einen Klick auf das Overlay geschlossen. Bei geöffnetem Menü muss für <body> die Eigenschaft overflow: hidden; gesetzt sein und die Position der Seite muss fixiert sein. Um einen flüssigen Übergang zu erzielen, empfiehlt es sich, nur inset-inline-start, inset-block-end, inset-inline-end oder inset-block-start für das Menü sowie opacity für das Overlay zu animieren:
const button = document.querySelector('.burger-button');
const menu = document.querySelector('.menu');
const overlay = menu.querySelector('.menu__overlay');
button.addEventListener('click', () => {
const isActive = menu.classList.toggle('active');
button.setAttribute('aria-expanded', isActive);
});
overlay.addEventListener('click', () => {
menu.classList.remove('active');
button.setAttribute('aria-expanded', 'false');
});Ähnliche Kategorien:
Meine Vorstellung davon, wie jede React-Komponente aussehen sollte
421
8 min.
Der SST-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Registerkarten fest
62
6 min.
Der SSF-U-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Vollbildmodus fest
248
2 min.
Der SSA-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Akkordeons fest
258
2 min.
Analyse kritischer Fehler im Webdesign. Warum Slider, Autoplay und schwerfällige Seiten die Konversionsrate sowie die Platzierungen bei Google verschlechtern
232
2 min.
Der SSP-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Paginierung fest
240
1 min.