Gunnar Bittersmann: mit java-script class ändern

Beitrag lesen

@@einsiedler

.js-enabled [aria-expanded="false"] + .nav-group { display:none !important;}

.js-disabled [aria-expanded="false"] + .nav-group { display:block !important;}

Zwischen diesen beiden classes möchte ich umzwitschen

Nei-en. Letzteres ist wohl grundverkehrt, wenn .navgroup sichtbar ist, aber das aria-expanded-Attribut des zugehörigen Buttons angibt, dass es nicht sichtbar ist. Das dürfte etliche Screenreader-Nutzer verwirren.

Wenn JavaScript nicht ausgeführt wird, sollte das aria-expanded-Attribut nicht den Wert "false" haben, sondern "undefined". [WAI-ARIA] Oder gar nicht vorhanden sein. Das hieße also: aria-expanded erst mit JavaScript auf "true" setzen.

Allerdings sind die Buttons, wenn JavaScript nicht ausgeführt wird, ohne Funktion. Dann sollten sie aber gar nicht zu sehen sein: <button hidden="">. (Wenn die Buttons hidden sind, könnten sie auch aria-expanded="true" haben.) Mit JavaScript wird das hidden-Attribut entfernt.

Oder die Buttons werden mit CSS display: none ausgeblendet (und wenn JavaScript läuft, eingeblendet).

Was du nicht brauchst: zwei Klassen js-enabled und js-disabled. Eine reicht. Mit JavaScript setzst du js-enabled. Ohne JavaScript ist die Klasse nicht da.

.js-enabled [aria-expanded="false"] + .nav-group { display:none !important;} wie gehabt. Die andere Regel brauchst du nicht.

LLAP 🖖

--
„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann