a11y: toggle nav button label when opened (#75679) #206
|
@ -3,10 +3,10 @@
|
|||
<nav role="navigation" class="site-nav">
|
||||
<div id="nav-wrapper" class="gru-nav-wrapper">
|
||||
{% block nav-pre %}{% endblock %}
|
||||
<div id="nav" class="gru-nav togglable">
|
||||
<div id="nav" class="gru-nav">
|
||||
{% block nav-top %}{% endblock %}
|
||||
<button id="nav-button" class="gru-nav-button togglable" aria-label="Menu">
|
||||
<span class="sr-only">Ouvrir le menu</span>
|
||||
<button id="nav-button" class="gru-nav-button" aria-labelledby="nav-button--label">
|
||||
<span class="sr-only" id="nav-button--label">Ouvrir le menu</span>
|
||||
<span class="icon-bar icon-bar-1"></span>
|
||||
<span class="icon-bar icon-bar-2"></span>
|
||||
<span class="icon-bar icon-bar-3"></span>
|
||||
|
@ -21,3 +21,19 @@
|
|||
{% block nav-post %}{% endblock %}
|
||||
</div> <!-- nav-wrapper -->
|
||||
</nav>
|
||||
|
||||
{% block nav-button-script %}
|
||||
<script>
|
||||
(function() {
|
||||
const nav_button = document.getElementById('nav-button');
|
||||
const nav_button_label = document.getElementById('nav-button--label');
|
||||
|
||||
nav_button.addEventListener('click', function() {
|
||||
if (nav_button.classList.toggle('toggled')) {
|
||||
nav_button_label.textContent = 'Fermer le menu';
|
||||
} else {
|
||||
nav_button_label.textContent = 'Ouvrir le menu';
|
||||
}
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
|
Loading…
Reference in New Issue
Cibler un element via une class utilitaire n'est pas une bonne idée.
Ensuite, l'attibut aria-label remplace le contenu, c'est à cet attribut qu'il faut faire changer le contenu.
L'audit notait de manière confuse "L'attribut aria-label est toujours "Ouvrir le menu" même quand il est ouvert", j'ai donc imaginé que ça lisait "Ouvrir le menu" et pas le "Menu" de aria-label, et c'est donc ça que j'ai changé.
Je fais une synthèse dans le patch modifié, avec désormais un seul libellé :
(et ça donne ainsi un id qui peut être ciblé, plut
Top. Parfait pour moi comme ça.