トピックを検索
縦向きか横向きに画面の向きが固定されたページ
向きのメディアクエリーでページを隠してスマートフォンを回すよう求めたり、ページを横倒しにしたりするため、デザインした向きでしか使えません。
@media (orientation: landscape) and (max-height: 500px) { main { display: none; } } 問題
スマートフォンやタブレットを一つの向きに固定している人は、逆の向きでしか使えないページを利用できません。
あるカフェの事前注文ページに、飲み物と食べ物が価格と「追加」ボタン付きで並んでいます。縦に持てば使えます。スマートフォンを横にすると、メニューが消えます。代わりに白い画面の中央に「スマートフォンを縦向きにしてご利用ください。」とだけ表示され、向きを戻すまで、ページのほかの部分は読むことも押すこともできません。
逆向きの固定もよくあります。座席表、ゲーム、スライドショーのように横長の画面向けに作られたページが、縦向きではCSSのtransformで自分を横倒しにします。文字は画面の上から下へ流れ、スマートフォンを横にしないと読めません。
達成基準1.3.4「表示の向き」はレベルAAで、WCAG 2.1で追加されました。コンテンツは、その向きが必須である場合を除き、表示と操作を縦向きか横向きの一方に制限してはなりません。W3Cは、ここで挙げた二つの形をどちらも不適合の例にしています。端末の向きを変えるよう求めるメッセージを表示するF100と、向きを固定するF97です。transformでページを回すことも、F97に含まれます。
この基準が対象とするのはページで、利用者自身の設定ではありません。スマートフォンの画面回転をロックしている人は自分で向きを選んでおり、固定のないページはその向きに従います。必須の例外の範囲は狭く、Understandingの文書が挙げるのは、横長の小切手を撮影する銀行のページと、縦向きでは鍵盤が小さくなりすぎるピアノです。「この向きのほうがきれい」は必須ではなく、片方の向きでしか描かれていないデザインも必須ではありません。
画面の大きさによる変化も対象外です。縦向きで1列、横向きで2列になるページは、何も制限していないため問題ありません。どちらの表示にも同じ内容と操作要素があります。
この固定は、max-height: 500pxのような高さの条件と組み合わされ、スマートフォンでだけ働くことがよくあります。マウントに固定された端末があるのはまさにそこで、デスクトップやノートパソコンでは、チームの誰も目にすることがありません。
10グループ中3グループに影響
- 全盲 (影響なし)
- 弱視 (影響あり)
- 色覚 (影響なし)
- ろう (影響なし)
- 難聴 (影響なし)
- 発話 (影響なし)
- 手の操作 (影響あり)
- 届く範囲・力 (影響あり)
- 認知 (影響なし)
- 光過敏 (影響なし)
- 届く範囲・力が限られる スマートフォンを持てない人や回せない人は、車いす、ベッド、机のマウントに一つの向きで固定して使います。逆の向きでしか使えないページは利用できず、回すよう求められても対応できません。
- 手の操作が限られる スイッチやヘッドポインターを使う人は、端末を目の前に固定し、周りの人に一度設定してもらっていることが多く、向きを変えるには誰かを待つ必要があります。
- 視覚が限られる 弱視の人は、文字を大きく、一行を長くするためにスマートフォンを横にすることが多く、横向きではページが消えてしまいます。
スキャナーはページを一つのウィンドウの大きさで一度読み込むだけなので、出会う向きは一つで、ページはその向きでは動きます。axeの向きのルールはtransformで回されたページを探しますが、実験的なルールで通常の実行には含まれず、メッセージの裏に隠された内容は探しません。EaseWebの診断は、各ページをスマートフォンの大きさで両方の向きに表示し、一方の向きで隠されたり覆われたりする内容を報告します。コーディングアシスタントに「縦向き専用にして」と頼むと、まさに不適合となるメディアクエリーを書き、1.3.4の修正を頼むと、メッセージの言い回しだけを和らげてページは隠したままにすることがあります。
試してみる
スマートフォンを縦にしてフラットホワイトを注文し、次に横にしてください。
スイッチでスマートフォンの向きを変えてください。マウントに固定され、一方の向きのままだとしたら、メニューを読んで「追加」を押せますか?
問題あり 修正できますか?
事前注文
スマートフォンは縦向きです。 この向きでは使えます。スマートフォンの向きを変えてみてください。
修正方法
向きの固定を削除し、幅に応じたレイアウトにします。
- 1向きのメディアクエリーで、ページを隠したり、覆ったり、回したりしない。
- 2幅に応じてレイアウトし、どちらの向きでも同じ内容と操作要素を出す。
- 3向いている向きは閉じられるお知らせで勧め、ページを置き換えるメッセージにはしない。
横向きでメッセージの裏に隠れるページ
<div class="turn-message">スマートフォンを縦向きにしてご利用ください。</div><main>…</main><main>…</main>スマートフォンを横にすると、メディアクエリーがメニュー全体を隠し、回すよう求める文だけを表示します。回せない人は注文できません。
縦向きではページが横倒しに描かれるため、横向きでしか読めません。内容はすべて残っていますが、文字は画面の上から下へ流れ、縦に固定されたスマートフォンは回して直すことができません。
メッセージと向きのルールがなくなり、ページはどちらの向きでも同じメニューを表示します。横向きではスマートフォンの幅が広いのでグリッドは2列、縦向きでは1列になります。レイアウトは使える広さに応じて変わり、それこそが向きのクエリーで代わりに表そうとしていたことです。デスクトップの狭いウィンドウやタブレットの画面分割のように、向きが意味を持たない場合でも機能します。
何を表示するかの判断に、向きのクエリーを使わないでください。座席表のように、本当に一方の向きのほうが使いやすいレイアウトもあります。その場合も、固定せずに伝える方法があります。
- 提案:「スマートフォンを横にすると座席表が大きくなります」のような短いお知らせを閉じられる形で出し、その下の座席表は使えるままにする。
- 専用の枠内でのスクロール:座席表は幅を保ち、キーボードで移動してスクロールできる枠の中で横にスクロールする。「狭い画面で横スクロールが出るページ」も参照してください。
- 切り替え:座席表の代わりに座席の一覧を出すボタンのように、画面に合う表示へ切り替える操作を用意する。W3Cの達成方法G214がこの方法です。
横向きのスマートフォンは縦が短く、約390 CSSピクセル、ブラウザー自身のバーを除くとさらに短くなります。固定のヘッダー、Cookieバナー、下部のバーが重なると、読めるページがほとんど残りません。向きの固定ではありませんが、横向きが使えないことに変わりはありません。高さが約500ピクセルを下回るときは、固定バーをスクロールで流すか、小さくしてください。
スクリプトやインストールしたウェブアプリも向きを固定できます。screen.orientation.lock()は全画面でのみ働くため、ゲームや動画プレーヤーで使われます。使わないか、利用者が選べる設定にしてください。インストールしたウェブアプリは、マニフェストのorientationで向きが決まります。この項目を書かないか、anyにしてください。
スマートフォンを回すとresizeが発生し、それをきっかけにページを作り直すことがあります。向きが変わっても、入力した内容、開いていたもの、フォーカスの位置を保ってください。
AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得、または全ガイドをコーディングエージェントで使う。
修正の確認
マウスを使わない5つの確認
確認方法: タッチ、ズーム、キーボード
OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。サイトのレイアウトや共通のスタイルを変更した際は、再度確認します。
制限
このサンプルは、どのページでも同じ結果になることを保証するものではありません。一方の向きが本当に必要なコンテンツもあり、必須の例外が適用されますが、それはその部分だけです。サイトのほかの部分は、両方の向きで使える必要があります。1.3.4を満たすレイアウトでも、高さが低いと文字が切れる、固定バーの下にフォーカスした要素が隠れるなど、横向きで別の基準を満たさないことがあります。利用者が使う端末やマウントで、一連の操作を確認してください。
よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。
コードを更新しても、使いやすさを保つために
ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。