サイトアイコン IT & ライフハックブログ|学びと実践のためのアイデア集

ブロックスキップとは?キーボード操作を助けるスキップリンクの実装と確認方法

Programmer hands Working at home with computer. Man writing a code. Men programmer hands on the keyboard. Hand coding and showing code graphic on screen. Web Design Business Concep

ブロックスキップは、ページの先頭にある共通メニューなどを飛ばし、本文へ直接移動できるナビゲーション機能です。

キーボードで最初にスキップリンクへフォーカスし、Enterキーを押すだけでメインコンテンツへ移動できるため、同じリンクを何度もたどる負担を減らせます。

ブロックスキップ(スキップリンク)とは

Webサイトには、ヘッダー、メニュー、検索欄など、複数のページで繰り返し表示される領域があります。

マウスを使う人は本文を直接選べますが、Tabキーで順番に移動する人は、本文より前にあるリンクやボタンを一つずつ通過しなければなりません。

そこで、ページ内リンクを使って繰り返し領域を迂回できるようにします。

このリンクをスキップリンクと呼び、その仕組み全体をブロックスキップと呼びます。

Web Content Accessibility Guidelines(WCAG)でも、複数のページで繰り返されるコンテンツを迂回する手段が求められています。

どの利用者の負担を減らすのか

スキップリンクは特定の利用者だけに向けた特別な操作ではなく、ページを順番に移動する人が本文へ到達しやすくするための近道です。

HTMLでスキップリンクを実装する

基本構成は、ページの先頭に置くリンクと、その移動先となるメインコンテンツの組み合わせです。

<a href="#main-content" class="skip-link">メインコンテンツへスキップ</a>

<header>
  <!-- ヘッダーの内容 -->
</header>

<nav>
  <!-- ナビゲーション -->
</nav>

<main id="main-content" tabindex="-1">
  <!-- メインコンテンツ -->
</main>

href="#main-content"id="main-content"を一致させることで、リンクを実行したときに本文の先頭へ移動します。

tabindex="-1"は、移動先を通常のTab順序へ追加せず、リンクからフォーカスを受け取れるようにするための指定です。

IDが重複していたり、リンク先と一致していなかったりすると移動できないため、テンプレート内のIDも確認します。

CSSでフォーカス時に表示する

スキップリンクは常に表示しても構いません。

通常時は画面外に置く場合も、キーボードフォーカスを受けたときには、現在地がわかる形で表示する必要があります。

.skip-link {
  position: absolute;
  top: 0;
  left: 1rem;
  z-index: 1000;
  padding: 0.75rem 1rem;
  color: #fff;
  background: #000;
  transform: translateY(-150%);
}

.skip-link:focus {
  transform: translateY(0);
  outline: 3px solid #ffbf47;
  outline-offset: 2px;
}

この例では、通常時はリンクを画面の上側へ移動し、フォーカス時に表示位置へ戻します。

フォーカスの輪郭を消すと、キーボード利用者が現在位置を判断しにくくなるため、輪郭は残します。

フォーカス表示全体の考え方は、キーボード操作とフォーカス表示を整える方法でも解説しています。

リンク名とスキップ先を決める

移動先が伝わるラベルを付ける

リンク名には「ここをクリック」のような曖昧な言葉を使わず、「メインコンテンツへスキップ」のように移動先を示します。

リンクだけを読み上げても目的が伝わるため、実行する前に移動先を判断できます。

スキップ先を増やしすぎない

一般的なページでは、メインコンテンツへのリンクが一つあれば、ヘッダーやメニューをまとめて迂回できます。

一方、検索結果の前に長い絞り込み領域があるなど、独立した領域を順番に通過する構成では、必要に応じてスキップ先を追加します。

その場合も、「検索結果へスキップ」のように、各リンクと移動先の対応がわかる名前を付けます。

キーボードで確認する手順

コードを追加しただけで完了とせず、実際のページで次の順に操作します。

  1. ページを開き、Tabキーを一度押す。
  2. スキップリンクが見える位置に表示され、リンク名を読めることを確認する。
  3. Enterキーを押し、メインコンテンツへ表示とフォーカスが移ることを確認する。
  4. もう一度Tabキーを押し、メインコンテンツ内の次のリンクやボタンへ進めることを確認する。
  5. 同じテンプレートを使う別ページでも、リンク先のIDと動作を確認する。

表示だけが本文へ移り、キーボードフォーカスがヘッダーに残る状態では、次のTab操作でヘッダーへ戻ってしまいます。

見た目の移動とフォーカスの移動を、セットで確認します。

実装時の確認ポイント

ブロックスキップは短いHTMLとCSSで実装できますが、使いやすさはフォーカスの動きまで確認して初めて判断できます。

まずは主要なページテンプレートに「メインコンテンツへスキップ」を設け、キーボードだけで一連の操作を試してください。


当社では、Webアクセシビリティ対応を支援するUUU ウェブアクセシビリティウィジェットを提供しています。

関連機能の一例は、UUU ウェブアクセシビリティウィジェットの翻訳機能で紹介しています。

モバイルバージョンを終了