-
投稿者投稿
-
2023年9月4日 3:22 AM #130581
お世話になります。
サイトの改善をしていたところ、PageSpeed Insightsにて「ユーザー補助」のラベルについて指摘がありました。
分かる範囲では「ドロワーメニューボタン」と「アコーディオンブロック」です。JavaScriptでaria-labelを付与したところ、改善され、モバイルにおいてもほぼパーフェクトスコアとなりました。
// .c-hamburger-btn 要素を取得 const hamburgerButtonElements = document.querySelectorAll('.c-hamburger-btn'); // 各ハンバーガーボタンに aria-label 属性を追加 hamburgerButtonElements.forEach(button => { button.setAttribute('aria-label', 'メニューボタン'); }); // .smb-accordion__item__control 要素を取得 const accordionControlElements = document.querySelectorAll('.smb-accordion__item__control'); // 各アコーディオンコントロールに aria-label 属性を追加 accordionControlElements.forEach(control => { control.setAttribute('aria-label', 'アコーディオンメニュー'); });
クライアントに納品する際の安心感と品質の担保として、ボタン要素にラベルの実装していただけたらありがたいです。ご検討よろしくお願いいたします。
2023年9月4日 4:51 PM #130613なるほど! ご提案ありがとうございます!
各ハンバーガーボタンに aria-label 属性を追加
ハンバーガーボタンはデフォルトで
.c-hamburger-btn__label
に「MENU」という文字列があってaria-label
をつけると二重で読まれてしまうのかなと思うので、.c-hamburger-btn__label
にaria-labeledby
をつけるか、.c-hamburger-btn__label
をaria-hidden="true"
にした上でaria-label
を追加する必要があるのかなと思いました。各アコーディオンコントロールに aria-label 属性を追加
こちらアコーディオンブロックの HTML を変更する方法で対応しようと思うのですが、ブロックの場合はそのページの編集画面を開いたときにブロックの HTML 構造のアップデートがかかるので、既存のアコーディオンブロックに
aria-label
を追加したい場合はアコーディオンブロックを設置しているページの編集画面を開いて更新していく作業が必要になります。♥ 0いいねをした人: 居ません2023年9月4日 4:53 PM #130614あ、というかハンバーガーボタン自体が
button
だから、span.c-hamburger-btn__label
をlabel.c-hamburger-btn__label
にしたら良いのかな…?♥ 0いいねをした人: 居ません2023年9月4日 7:25 PM #130620すみません、こちらの環境だとハンバーガーメニューにはエラーがでていないっぽいのですが、「MENU」の文字列を消されたりしていますかね…?
♥ 0いいねをした人: 居ません2023年9月4日 10:06 PM #130623申し訳ありません。確かに、menuの文字列は削除してました…!
アイコンのみのハンバーガーメーニューの実装は多いため、button
要素自体にラベルがあった方が都合は良いですが、.c-hamburger-btn__label
との兼ね合いがありますよね…。アコーディオンブロックの更新の件、承知いたしました。ありがとうございます!
♥ 0いいねをした人: 居ません2023年9月4日 10:37 PM #1306262023年9月5日 12:29 AM #130679Snow Monkey Blocks v20.2.1 で変更を入れました。アップデートして確認してみてください!
♥ 0いいねをした人: 居ません2023年9月5日 8:01 AM #130687アップデートで確認できました!
他の部分まで実装いただきありがとうございます。// ハンバーガーメニューのmenuを削除 add_filter( 'snow_monkey_get_template_part_args_template-parts/header/hamburger-btn', function( $args ) { $args['vars']['_label'] = ''; return $args; } );
文字の削除はこのように処理しているのですが、同時にフックでbuttonに属性追加することってできますでしょうか?
それともJavaScriptが適切ですかね?♥ 0いいねをした人: 居ません2023年9月5日 8:30 AM #130688あ! コードありがとうございます、そのコードでラベルのオンオフができるようになっていたのをうっかり忘れていました。これがあるならオフにしたときは自動的に
aria-label
が追加されるようにしたほうが良いですよね。ちょっとまた変更入れてみます!♥ 0いいねをした人: 居ません2023年9月5日 9:44 AM #130710v25.1.4 で変更を入れてみました。アップデートしていただければ自動的に
aria-label
が追加されます。aria-label
に使用する文字列を変更したい場合は下記の記事のサンプルコードを確認してみてください。2023年9月6日 11:00 AM #130784 -
投稿者投稿
- トピック「ボタン要素にaria-labelの追加を希望」には新しい返信をつけることはできません。