0Pricing
HTML Academy · レッスン

キーボード操作とフォーカス順序

すべての機能にキーボードで論理的にアクセスできるようにします

「キーボード操作とフォーカス順序」はCoddyKit上の無料HTML Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはHTML Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 HTML Academyコースには全4レッスンが含まれています。

キーボードナビゲーションが必要なユーザー

多くのユーザーがキーボードナビゲーションに頼っています。

  • 運動障害のあるユーザー — マウスを使えません
  • パワーユーザー — キーボードショートカットを好みます
  • スクリーンリーダーのユーザー — すべてキーボードで移動します
  • スイッチアクセスのユーザー — キー入力をシミュレートするボタンを使います

標準でフォーカス可能な要素

次のHTML要素は、デフォルトでキーボードによるフォーカスが可能です。

  • <a href> — Tabで移動し、Enterでアクティブにします
  • <button> — Tabで移動し、EnterまたはSpaceでアクティブにします
  • <input>、<textarea>、<select> — Tabで移動します
  • <details> / <summary> — Tab + Enter

Tab順序

ブラウザーは、次の規則でTab順序を決定します。

  • デフォルトではDOM順序 — 要素はHTMLに現れる順序でTab移動します
  • 正のtabindex値 — それらの要素が昇順で先にTab移動されます
  • tabindex="0" — DOM上の位置で、自然なTab順序に追加されます
  • tabindex="-1" — Tab順序には含まれず、スクリプトでのみフォーカスできます

自然なTab順序 = DOM順序

HTMLの読み上げ順序は、視覚的なレイアウトと一致させる必要があります。

<!-- GOOD: DOM order matches visual left-to-right, top-to-bottom: -->
<header>...</header>
<nav>...</nav>
<main>...</main>
<aside>...</aside>
<footer>...</footer>

<!-- BAD: visually reordered with CSS, DOM order broken:
     CSS flexbox order: doesn't affect tab order!
     Screen readers and keyboard users follow DOM order, not CSS order -->

フォーカスの可視インジケーター

WCAG 2.4.7(レベルAA):キーボードフォーカスは視認できる必要があります。

/* NEVER do this: */
* { outline: none; }           /* removes all focus outlines */

/* GOOD: styled focus indicator: */
:focus-visible {
  outline: 2px solid #0070f3;
  outline-offset: 3px;
  border-radius: 4px;
}

/* :focus-visible shows outline for keyboard only
   mouse clicks don't trigger :focus-visible -->
/* But outline: none with :focus (not :focus-visible) hides for both */

カスタムフォーカススタイル

デザインシステムのフォーカススタイル:

/* Replace outline with box-shadow for rounded elements: */
button:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(0, 112, 243, 0.4);
}

/* Always ensure 3:1 contrast ratio between
   focus indicator and background (WCAG 2.4.11 Level AA) */

論理的なフォーカス順序

フォーカス順序は論理的で予測可能にする必要があります — WCAG 2.4.3(レベルA):

<!-- BAD: focus order jumps around the page -->
<!-- First: footer link (tabindex=5) -->
<!-- Then: sidebar (tabindex=3) -->
<!-- Then: header nav (tabindex=1) -->

<!-- GOOD: natural DOM order matches reading flow: -->
<!-- Header → Nav → Main Content → Sidebar → Footer -->

スキップリンク

スキップリンクを使うと、キーボードユーザーは繰り返し表示されるナビゲーションを飛ばせます。

<a href="#main-content" class="skip-link">Skip to main content</a>

<!-- Visually hidden until focused: -->
.skip-link {
  position: absolute;
  top: -100%;
  left: 0;
  background: #0070f3;
  color: white;
  padding: 0.75rem;
  z-index: 9999;
}
.skip-link:focus {
  top: 0;  /* visible when focused -->
}

モーダルのフォーカストラップ

モーダルを開いている間は、フォーカスをモーダル内に閉じ込める必要があります。

<!-- When modal opens:
1. Move focus to modal container or first interactive element
2. Tab stays within modal
3. When modal closes, return focus to the trigger button
-->

const modal = document.getElementById('modal');
const trigger = document.getElementById('open-modal');

function openModal() {
  modal.removeAttribute('hidden');
  modal.querySelector('button, [tabindex="0"]').focus();
}

function closeModal() {
  modal.setAttribute('hidden', '');
  trigger.focus();
}

キーボードショートカット

イベントリスナーを使ってキーボードショートカットを実装します。

document.addEventListener('keydown', (e) => {
  // Close modal on Escape:
  if (e.key === 'Escape') closeModal();

  // Navigate tabs with arrow keys:
  if (e.key === 'ArrowRight') focusNextTab();
  if (e.key === 'ArrowLeft') focusPrevTab();

  // Submit form on Enter (default behavior in inputs):
  // Nothing needed — browser handles this
});

キーボードナビゲーションのテスト

キーボードアクセシビリティのテスト方法:

  1. マウスを片付け、キーボードだけを使う
  2. Tabを押す — すべてのインタラクティブ要素に移動できますか
  3. フォーカスインジケーターは常に表示されていますか
  4. Tab順序は論理的に理解できますか
  5. マウスを使わずにすべての機能(フォーム、モーダル、ドロップダウン)を使えますか
  6. Shift+Tabを押して後ろ向きに移動する

確認

キーボードアクセシビリティのために、すべての要素から決して削除してはいけないCSSプロパティは何ですか。

まとめ:キーボードナビゲーション

キーボードアクセシビリティで重要な点:

  • すべてのインタラクティブ要素にTabで移動できる必要があります
  • DOM順序 = Tab順序 — 視覚的なレイアウトと一致させる
  • フォーカスのアウトラインを決して削除しない — カスタムスタイルには:focus-visibleを使用する
  • スキップリンクを使うと、繰り返し表示されるナビゲーションを飛ばせます
  • モーダルではフォーカスを閉じ込め、閉じるときにフォーカスを戻す
  • キーボードだけでサイトを操作してテストする

よくある質問

「キーボード操作とフォーカス順序」レッスンは無料ですか?

はい。「キーボード操作とフォーカス順序」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、HTML Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 HTML Academyコースには全4レッスンが含まれています。

「キーボード操作とフォーカス順序」で何を学びますか?

すべての機能にキーボードで論理的にアクセスできるようにします ブラウザで直接実行するハンズオンコードでHTML Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

HTML Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのHTML Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「キーボード操作とフォーカス順序」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このHTML Academyレッスンでコードを書いて実行できますか?

はい。すべてのHTML Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. アクセシビリティが重要な理由とWCAGレベル
  2. スクリーンリーダーのための見出し階層
  3. 画像のaltテキストはいつ、どのように使うか
  4. キーボード操作とフォーカス順序
← HTML Academyに戻る