ADR-0068: ハイコントラストのとき、選んだタブの下の罫を、筆の線の形でなく全幅の帯にする¶
Status¶
承認
Context¶
Windows のハイコントラスト(forced-colors: active)で、選んだタブを見分けられる形を決める必要がある。
- 選んだタブの下の罫は、筆の線の形(入りが太く、終わりを払う)にして、左から 1 回引くと決めている。
- 筆の線の形は、罫の要素に
maskを当てて作る。罫の高さは 4px(density="compact"は 3px)で、終わりへ向かって細くなる。 - ハイコントラストでは、ブラウザが背景の色を消し、色をシステムの色に置き換える。タブの文字は全て同じ色になり、選んだタブを示す手がかりは、この罫だけになる。
- 罫を
CanvasTextで塗っても、先が細る形のままでは、細く見えて、選んだタブを見分けにくい。 - ハイコントラストのコンポーネントの扱いは、
forced-*のユーティリティで、システムの色をtheme.cssに置いている(packages/ui/DESIGN.mdの「ハイコントラスト」)。
Decision¶
- ハイコントラストのときだけ、選んだタブの下の罫から筆の線の形(
mask)を外し、タブの幅いっぱいの、同じ高さの帯にする。色はCanvasTextにする。 - 通常の表示は変えない。筆の線の形、左から 1 回引く動き、高さは、ADR-0028 のままである。
- テーマ変数のファイルに、
forced-solidのユーティリティを足す。forced-colors: activeのときだけmask: noneにする。Tabsの罫に付ける。 - 対象は
Tabsの選んだタブの罫だけにする。筆の線の形を使うほかの要素には広げない。- 検索の欄のフォーカスの罫は、フォーカスしている間に出る補助の表示で、フォーカスの輪が別にある。
- ダイアログの上端の罫は、飾りである。
- ナビの今いるページの印と、パンくずリストの hover の線は、同じ見えにくさがありうる。確認していない(未確認)。必要になったときに、同じ
forced-solidを付ける。
- 理由は、ハイコントラストの利用者が、選んだタブを見分けられることを、筆の線の形より優先するためである。筆の線の形は、ふだんの画面の和の感じとして残す。
左から 1 回引く動きは、ハイコントラストでも変えない。
ハイコントラストでは、ナビの今いるページの印と、選んだタブの罫は、形がそろわない。
Verification¶
- コンポーネントのテスト(
Tabs.forced-colors.test.tsx)で、Chromium をforced-colors: activeにして、次の 2 つを確認した。- 罫の
mask-imageがnoneである。 - 罫が背景の色と違う色で塗られる。
- 罫の
forced-solidを外すと、このテストが失敗することも確認した。- カタログの
Tabsの story を、Chromium のforced-colors: activeを再現して、ライトのテーマで改修前後を撮った。- 改修前は、罫が細く出て、選んだタブを見分けにくかった。
- 改修後は、帯がタブの下に全幅で出た。
- Windows の実機のハイコントラストの設定、ダークのテーマ、Safari、Firefox は確認していない(未確認)。
Considered Options¶
| 選択肢 | 強み | 弱み |
|---|---|---|
| 採用: ハイコントラストのときだけ、筆の線の形を外して全幅の帯にする | 選んだタブを見分けられる。通常の表示の筆の線は変わらない | ハイコントラストでだけ、罫の形が替わる。ADR-0028 に例外が 1 つ増える |
筆の線の形のまま、CanvasText で塗る |
ADR-0028 に例外を足さない | 罫が細く出て、選んだタブを見分けにくい |
| 通常の表示でも、選んだタブの罫を全幅の帯にする | 例外が無く、形が 1 つになる | ADR-0028 で決めた、タブの筆の線をなくす。ふだんの画面の和の感じが、タブから減る |
| 選んだタブの文字を太くするなど、罫以外の手がかりを足す | 形に頼らず、選んだタブを示せる | 文字の太さが変わると、タブの幅が変わる。通常の表示の見た目にも影響する |
Consequences¶
Positive¶
- ハイコントラストで、選んだタブを、罫の太さと色で見分けられる。
- 通常の表示は変わらない。
Negative¶
- 筆の線の形の罫を使う要素のうち、
Tabsだけがハイコントラストで形を替える。ほかの要素との扱いが揃わない。 forced-solidのユーティリティが 1 つ増える。