見た目だけじゃない。
CSSで実現するアクセシビリティ対応の基本

アクセシビリティCSS実装

アクセシビリティとは「すべての人がWebサイトの情報にアクセスできること」。視覚障害のある方、キーボードだけで操作する方、動きに酔いやすい方——さまざまなユーザーに配慮することは、品質の高いWeb制作の基本です。
本記事では、CSSで対応できるアクセシビリティの4つの基本テクニックを紹介します。

1. フォーカスリングを消さない

Tabキーで操作するユーザーにとって、フォーカスリング(青い枠線)は「今どこにいるか」を知る唯一の手がかりです。下のボタンをTabキーで選択してみてください。

CSS
/* ❌ やってはいけない */
*:focus { outline: none; }

/* ✅ キーボード操作時のみ表示 */
:focus-visible {
    outline: 3px solid #E31010;
    outline-offset: 3px;
}

/* マウスクリック時はリングを非表示 */
:focus:not(:focus-visible) {
    outline: none;
}
💡 ポイント::focus-visible は「キーボード操作でフォーカスが当たった時」のみ適用される擬似クラス。マウスクリック時はリングが出ないので、見た目を損なわずにアクセシビリティを確保できます。

2. prefers-reduced-motion の対応

アニメーションで酔いやすい方は、OS設定で「動きを減らす」をONにしています。この設定をCSSで検知し、アニメーションを無効化しましょう。

CSS
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

3. コントラスト比を確保する

WCAGガイドラインでは、テキストと背景のコントラスト比が 4.5:1 以上(大きなテキストは3:1以上)であることを求めています。

✅ #FFFFFF on #1A1A1A
比率: 16.8:1
✅ #FFFFFF on #E31010
比率: 4.6:1
⚠️ #6B6560 on #FFFFFF
比率: 4.9:1
❌ #CCCCCC on #FFFFFF
比率: 1.6:1
💡 ポイント:Chrome DevToolsの「色のコントラスト比」表示や、WebAIM Contrast Checker で簡単に確認できます。

4. スクリーンリーダー専用テキスト

アイコンだけのボタンなど、視覚的には意味が伝わるが音声では伝わらない要素に、スクリーンリーダー向けのテキストを追加する定番テクニックです。

.sr-only クラスを適用すると、テキストは画面には表示されませんが、スクリーンリーダーには読み上げられます。
CSS
/* 視覚的に隠すが、スクリーンリーダーには読まれる */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* 使用例 */
/* <button>
    <svg>...</svg>
    <span class="sr-only">メニューを開く</span>
</button> */

まとめ

アクセシビリティは「追加コスト」ではなく「品質基準」です。最初から組み込むことで、すべてのユーザーにとって使いやすいサイトが完成します。

💡 ツタワルの制作では:アクセシビリティ対応を標準の品質基準として、すべてのプロジェクトに組み込んでいます。「誰にでも伝わる」が、私たちの社名に込めた想いです。

Contact

伝わるまで、何度でも。

あなたのブランドの「言葉」と「形」を、一緒に見つけませんか?
些細なご相談でも、まずはお気軽にお話ししましょう。