Barrierefreiheit (BFSG/WCAG 2.1 AA): Skip-Link, aria-live, Labels, Fokus-Sichtbarkeit, Überschriften-Hierarchie
Technisches Accessibility-Audit ergab sechs behebbare Punkte, alle jetzt gefixt: - Skip-to-Content-Link ganz oben auf jeder Seite (WCAG 2.4.1) - Fehler-/Statusmeldungen (Checkout, Login, Rezension, Gate-/Verwaltungs-Code) jetzt mit role="alert"/aria-live, damit Screenreader sie automatisch ansagen (WCAG 4.1.3) - Warenkorb-Icon hatte fälschlich das "Konto"-Label geerbt, sagt jetzt korrekt "Warenkorb" (WCAG 4.1.2/2.4.4), dafür t.nav.cart in allen 4 Sprachen neu ergänzt - Sichtbarer Fokus-Ring beim Mengenfeld auf der Produktseite wiederhergestellt (WCAG 2.4.7) - Placeholder-only Formularfelder (Gate-Zugangscode, Verwaltungs-Suche/Filter/Tracking) haben jetzt echte Labels (sichtbar per sr-only-Klasse oder aria-label) statt nur Platzhaltertext (WCAG 1.3.1/3.3.2) - Übersprungene Überschriften-Ebenen (h1→h3 ohne h2) in Checkout, Warenkorb, Kontakt, Konto korrigiert (WCAG 1.3.1) Reine Accessibility-Nachrüstung, keine funktionale Änderung. Kleinstunternehmer-Ausnahme (§3 Abs.3 BFSG) greift hier vermutlich, aber vorsorglich sauber umgesetzt. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
b70bad3e41
commit
b944bcf724
@@ -19,7 +19,7 @@ const t = useTranslations(lang);
|
||||
<form class="frm card" id="checkout-form">
|
||||
<div class="checkout-split">
|
||||
<div class="checkout-split-col">
|
||||
<h3>{t.checkout.step2}</h3>
|
||||
<h2>{t.checkout.step2}</h2>
|
||||
{/* Nur noch zwei Zahlungsarten (auf ausdrücklichen Wunsch, siehe Recherche zu Rechts-/
|
||||
Kostenlage): Klarna raus (würde eine eigene Händlerprüfung + Bonitätsprüfungs-
|
||||
Pflichten voraussetzen, siehe EU-Verbraucherkreditrichtlinie) und keine eigene
|
||||
@@ -58,7 +58,7 @@ const t = useTranslations(lang);
|
||||
<div class="pay-panel-inline">
|
||||
<p>{t.checkout.payPalHint}</p>
|
||||
<div id="paypal-button-container"></div>
|
||||
<p class="pay-connect-status" id="paypal-error" style="display:none; color: var(--c-sale);"></p>
|
||||
<p class="pay-connect-status" id="paypal-error" role="alert" aria-live="assertive" style="display:none; color: var(--c-sale);"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pay-card" style="--brand-color:#7fa8c9; --brand-bg:#3b5a76;">
|
||||
@@ -79,7 +79,7 @@ const t = useTranslations(lang);
|
||||
</div>
|
||||
<div class="checkout-split-divider" aria-hidden="true"><span>🧵</span></div>
|
||||
<div class="checkout-split-col">
|
||||
<h3>{t.checkout.step1}</h3>
|
||||
<h2>{t.checkout.step1}</h2>
|
||||
<div><label for="email">{t.checkout.email}</label><input id="email" type="email" required /></div>
|
||||
<div class="grid grid-2">
|
||||
<div><label for="vorname">{t.checkout.firstName}</label><input id="vorname" type="text" required /></div>
|
||||
@@ -101,7 +101,7 @@ const t = useTranslations(lang);
|
||||
</div>
|
||||
|
||||
<hr class="divider" />
|
||||
<h3>{t.checkout.step3}</h3>
|
||||
<h2>{t.checkout.step3}</h2>
|
||||
<div id="checkout-summary" class="checkout-summary"></div>
|
||||
<p class="small">{t.common.vatNote}</p>
|
||||
|
||||
@@ -131,7 +131,7 @@ const t = useTranslations(lang);
|
||||
<input type="text" id="coupon-input" placeholder={t.cart.couponPlaceholder} />
|
||||
<button type="button" id="coupon-apply" class="btn btn-outline btn-sm">{t.cart.couponApply}</button>
|
||||
</div>
|
||||
<p class="small" id="coupon-status"></p>
|
||||
<p class="small" id="coupon-status" role="status" aria-live="polite"></p>
|
||||
</div>
|
||||
<hr class="divider stitched" />
|
||||
<div class="coupon-row">
|
||||
@@ -140,7 +140,7 @@ const t = useTranslations(lang);
|
||||
<input type="text" id="partner-code-input" placeholder={t.cart.partnerCodePlaceholder} />
|
||||
<button type="button" id="partner-code-apply" class="btn btn-outline btn-sm">{t.cart.partnerCodeApply}</button>
|
||||
</div>
|
||||
<p class="small" id="partner-code-status"></p>
|
||||
<p class="small" id="partner-code-status" role="status" aria-live="polite"></p>
|
||||
</div>
|
||||
<hr class="divider stitched" />
|
||||
<h3>🚚 {t.checkout.shippingHintTitle}</h3>
|
||||
@@ -403,6 +403,8 @@ import { registriereAbgeschlosseneBestellung, treuebonusEinloesen } from "../../
|
||||
const submitBtn = document.getElementById("order-submit-btn");
|
||||
const orderErrorEl = document.createElement("p");
|
||||
orderErrorEl.className = "small";
|
||||
orderErrorEl.setAttribute("role", "alert");
|
||||
orderErrorEl.setAttribute("aria-live", "assertive");
|
||||
orderErrorEl.style.color = "var(--c-sale)";
|
||||
orderErrorEl.style.display = "none";
|
||||
submitBtn.insertAdjacentElement("beforebegin", orderErrorEl);
|
||||
|
||||
Reference in New Issue
Block a user