このページの本文へ移動

SCR31:フォーカスのある要素の背景色又はボーダーを変更するために、スクリプトを使用する

出典:WAIC. “ SCR31: フォーカスのある要素の背景色又はボーダーを変更するために、スクリプトを使用する新しいウィンドウを開きます ” WCAG 2.0 達成方法集(参照2024年8月1日)

概要

SCR31は、ウェブコンテンツ制作者がJavaScriptを用いて、フォーカスを受けた要素の視認性を向上させるための技術です。通常、要素がフォーカスを受けると、その背景色またはボーダーが変更され、視覚的に異なる状態になります。フォーカスが外れると、元のスタイルに戻ります。この技術は、:focus疑似クラスをサポートしていないユーザエージェントでも使用可能であり、スクリプトやCSSをサポートしているすべてのHTMLユーザエージェントに適用できます。

このページでは、ウェブサイト制作でよく直面する課題に対して、基本的で取り組みやすい方法を紹介しています。
ただし、他にも対処すべき状況や多くの手段があり、具体的な状況に応じて最適な方法を選ぶことが大切です。

適用(対象)

こちらは、次の達成基準に関連する達成方法です。

実践的な方法

フォーカスイベントのリスナーを追加する

JavaScriptを使用して、要素にフォーカスが当たったときに特定のスタイルを適用するためのイベントリスナーを追加します。以下はその例です。

document.addEventListener('DOMContentLoaded', function() {
  var focusableElements = document.querySelectorAll('a, button, input, textarea, select');

  focusableElements.forEach(function(element) {
    element.addEventListener('focus', function() {
      element.style.backgroundColor = 'yellow'; // フォーカス時の背景色
      element.style.border = '2px solid red'; // フォーカス時のボーダー
    });

    element.addEventListener('blur', function() {
      element.style.backgroundColor = ''; // フォーカスが外れたときに元のスタイルに戻す
      element.style.border = '';
    });
  });
});

CSSと組み合わせる

CSSを使用して基本的なスタイルを定義し、JavaScriptでフォーカス時のスタイルを変更します。

/* 基本スタイル */
.focusable {
  transition: background-color 0.3s ease, border 0.3s ease;
}

/* フォーカス時のスタイル */
.focused {
  background-color: yellow !important;
  border: 2px solid red !important;
}
document.addEventListener('DOMContentLoaded', function() {
  var focusableElements = document.querySelectorAll('.focusable');

  focusableElements.forEach(function(element) {
    element.addEventListener('focus', function() {
      element.classList.add('focused');
    });

    element.addEventListener('blur', function() {
      element.classList.remove('focused');
    });
  });
});

アクセシビリティを考慮したフォーカススタイル

フォーカススタイルは視覚的に明確である必要があります。背景色やボーダーの変更に加えて、コントラスト比も考慮する必要があります。

document.addEventListener('DOMContentLoaded', function() {
  var focusableElements = document.querySelectorAll('a, button, input, textarea, select');

  focusableElements.forEach(function(element) {
    element.addEventListener('focus', function() {
      element.style.backgroundColor = '#FFD700'; // 高いコントラストの背景色
      element.style.border = '3px solid #0000FF'; // 高いコントラストのボーダー
    });

    element.addEventListener('blur', function() {
      element.style.backgroundColor = '';
      element.style.border = '';
    });
  });
});

まとめ

SCR31の実装により、フォーカスされた要素の視認性が向上し、キーボードナビゲーションの際のユーザビリティが大幅に改善されます。この技術は、フォーカスの視覚的な表示を強化し、アクセシビリティの基準に準拠するための重要な手段です。CSSとJavaScriptを組み合わせることで、すべてのユーザエージェントに対応した柔軟なソリューションを提供できます。フォーカススタイルは、視覚的な明確さとコントラスト比を考慮し、すべてのユーザーにとってアクセスしやすいウェブコンテンツを実現することが重要です。

WCAG 2.0とその翻訳文書の利用について

本ページの内容は、「Web Content Accessibility Guidelines (WCAG) 2.0新しいウィンドウを開きます」、「WCAG 2.0 解説書新しいウィンドウを開きます」および「WCAG 2.0 達成方法集新しいウィンドウを開きます」からの引用を含んでいます。引用された内容は、W3CおよびWAICによって公開されており、以下のクリエイティブ・コモンズライセンスに基づいて使用されています。これらのガイドラインを参考にしつつ、ウェブアクセシビリティの向上に向けた具体的な取り組みを分かりやすく説明しています。

WCAG 2.0

この作品はクリエイティブ・コモンズ 表示 4.0 国際ライセンス新しいウィンドウを開きますの下に提供されています。

WCAG 2.0 解説書及び達成方法集

この作品はWCAG 2.0 解説書及び達成方法集からの引用を含みます。翻訳はWAICによって提供されており、文書のステータスは「勧告」です。なお、この文書の正式版はあくまでW3Cのサイト内にある英語版であることにご注意ください。

Contactお問い合わせ

当社ではウェブアクセシビリティ診断を提供しております。すべてのユーザーにアクセスできるウェブサイトを目指して、一緒に取り組みましょう。診断のご依頼や詳細については、お気軽にご連絡ください。

お問い合わせ