誰でも使えるようにする

この場面の困り事と、そのまま使えるコード。全14件。 足りなければ、行末のページへ進む。

誰でも使えるようにするの場面で、最初にどこを見るかの順と、避けること
図を大きく見る

このページの中だけを絞ります。ページは移りません。

キーボードだけで操作できない

div にクリックを付けている。button と a に替える。それだけで、大半は直る。キーボードで使える

<!-- NG -->
<div onclick="open()">開く</div>
<!-- OK -->
<button type="button">開く</button>

フォーカスの枠を消したい

消さない。outline の色と太さのほうを変えて、暗い地でも見える形にする。キーボードで使える

消さない。色と太さを変えて、暗い地でも見える形にする。

HTML

<button type="button">操作</button>

CSS

:focus-visible {
  outline: 2px solid var(--color-accent-text);
  outline-offset: 2px;
}

マウスで押すとフォーカス枠が出て邪魔

:focus ではなく :focus-visible を使う。キーボード操作のときだけ出る。キーボードで使える

:focus ではなく :focus-visible。キーボードのときだけ出す。

HTML

<button type="button">操作</button>

CSS

:focus {
  outline: none;
}
:focus-visible {
  outline: 2px solid var(--color-accent-text);
  outline-offset: 2px;
}

Tabの順序が見た目と違う

CSSで並び順を変えている。DOMの順を直すか、視覚順を戻す。tabindex に正の値は使わない。キーボードで使える

DOMの順を視覚順に合わせる。tabindex="1" 以上は使わない

読み上げで構造が伝わらない

見出しを大きさで選んでいる。h1からh6を意味の階層で付け直し、大きさはCSSで決める。構造で伝える

<h1>ページタイトル</h1>
<h2>第1章</h2>
<h3>小見出し</h3>

画像のaltに何を書けばいいか

その画像が無かったら代わりに何と書くかを書く。装飾なら alt="" にする。省略はしない。構造で伝える

<img src="chart.png" alt="2024年の売上推移。第3四半期が最高">
<img src="line.svg" alt="" role="presentation">

アイコンだけのボタンに名前がない

aria-label で機能名を与える。見えているテキストがあるなら、それと違う名前にしない。ARIA

<button type="button" aria-label="メニューを開く">
  <svg aria-hidden="true">...</svg>
</button>

ariaを付けたのに読み上げが変わらない

役割が要素と食い違っている。まず適切なHTML要素に替える。ARIAは足りないときだけ。ARIA

<!-- NG -->
<div role="button">送信</div>
<!-- OK -->
<button type="submit">送信</button>

動的に増えた内容が読み上げられない

空のライブリージョンを先に置き、中身だけ差し替える。要素ごと後から足すと検出されない。ARIA

<div id="live" aria-live="polite" aria-atomic="true"></div>
live.textContent = '3件追加しました';

文字を大きくすると要素が壊れる

高さを固定している。height をやめて min-height と padding にする。見やすさ

input, select { min-block-size: 2.75rem; padding-block: var(--space-2); }
/* height: 44px; と書くと、文字を大きくしたときに切れる。
   ボタンの基底も同じ組み方で「出発点のCSS」にある */

400%拡大の確認はどうやるか

幅1280pxで400%にするか、幅320pxで開く。横スクロールが出なければよい。見やすさ

/* 幅1280pxで400%拡大、または幅320pxで開く */
document.documentElement.scrollWidth <= window.innerWidth

動きを減らす設定にどう対応するか

prefers-reduced-motion で大きな移動と視差を止める。色と不透明度の変化は残す。全部止めない。見やすさ

大きな移動と視差を止める。色と不透明度の変化は残してよい。

HTML

<div class="anim">…</div>

CSS

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

アクセシビリティの基準が分からない

WCAG 2.2 の AA を目標にする。まずコントラスト・キーボード・見出し・代替テキストの4つ。WCAGの構造

目標: WCAG 2.2 AA。コントラスト・キーボード・見出し・alt

WCAGの構造で手順を見る

自動チェックツールで問題0だった

機械で判定できるのは一部の基準だけ。キーボードで一周し、読み上げで見出しを拾ってみる。検証と完了

キーボードでTab一周 + 読み上げで見出しを拾う

検証と完了で手順を見る

この場面で貼れるもの#

答えを読んだら、ここから完成形を持ち帰れます。

この資料は、Webサイトを作るときに引くためのものです。 何のために作ったか。作っているのは AK²Lab。