prefers-reduced-motionへの正しい対応

動きを減らす設定への正しい対応

prefers-reduced-motion:CSS、JavaScript、Reactのパターン | We.Inc

動きを減らす設定をCSSとJavaScriptで検出し、自分の設定をその場で確認できます。アニメーションを削除するのではなく、大きな動きをフェードに置き換えるパターンをコピーして使えます。

prefers-reduced-motionは、訪問者が端末に動きを減らすよう設定しているかを伝えるCSSのメディア特性です。値はno-preferenceとreduceの2つです。パララックス、ズーム、スライドなどの大きな動きをクエリで囲み、値がreduceのときは短いフェードに置き換えるか、アニメーションなしにします。

この設定をオンにする場所

動きを減らす設定をオンにするのは、スライド、ズーム、パララックスがめまい、吐き気、頭痛を引き起こすことがあるからです。前庭障害のある人には特に影響が大きくなります。下のバッジは自分の端末の設定をその場で読み取り、デモでは同じアニメーションを通常版と動きを減らした版で表示するので、比べてからパターンを選べます。

よくある質問

このメディア特性にはどんな値がありますか?

2つあります。訪問者が何も設定していない場合のno-preferenceと、動きを減らすよう求めている場合のreduceです。@media (prefers-reduced-motion)とだけ書くと、reduceを指定したのと同じ意味になります。

JavaScriptでこの設定を確認するには?

window.matchMedia("(prefers-reduced-motion: reduce)")を呼び出し、そのmatchesプロパティを読み取ります。ページを開いている間に設定が変わったときに対応するには、返されたオブジェクトにchangeイベントのリスナーを追加します。

reduceが設定されたら、すべてのアニメーションをオフにすべきですか?

いいえ。求められているのは動きを減らすことで、ページを止めることではありません。色の変化、短いフェード、進捗表示は残し、スライド、拡大縮小、回転、パララックスなどの動きは削除するか小さくしましょう。

動きを減らす設定への対応はWCAGで必須ですか?

WCAG 2.3.3「インタラクションによるアニメーション」(レベルAAA)では、操作によって起こる動きは、不可欠な場合を除いてオフにできることが求められています。システムの設定に従うことは、これを満たす方法の1つとして挙げられています。これとは別に、2.2.2「一時停止、停止、非表示」(レベルA)は、自動的に始まる動きを対象としています。

Tailwindで動きを減らす設定に対応するには?

設定がない場合にだけアニメーションを適用するにはmotion-safe:バリアントを、reduceが設定されているときに上書きするにはmotion-reduce:を使います。たとえばmotion-safe:animate-bounceのように書きます。

問題を起こす動き

動きなしを基本にしたCSS

スクリプトとライブラリ

CSSのパターン

追加の演出としての動き

カードがスライドインするのは、設定がない場合だけです。それ以外の人には穏やかなフェードが表示されます。

既存サイトのためのセーフティネット

すべてのアニメーションを書き直せない場合に便利です。再生時間をなしではなくほぼゼロにするため、animationendやtransitionendのイベントは引き続き発火します。

JavaScriptとReact

設定を読み取り、変更に追従する

matchMediaはライブのリストを返します。訪問者が設定を切り替えると、その変更イベントが発火します。

Reactフック:usePrefersReducedMotion

サーバー上ではtrueから始まるため、ブラウザーが値を返すまでは何もアニメーションしません。

各効果を何に置き換えるか

動きを減らした代替案

あなたの動きの設定

バッジはJavaScriptのメディアクエリ照合で端末の設定を読み取り、プレビューのスイッチではシステムを変えずに動きを減らしたアニメーションを確認できます。

プレビューモード

自分の設定に従う

通常の動きをプレビュー

動きを減らした版をプレビュー

もう一度再生

動きを減らした版:その場での短いフェード。

通常の動き:パネルが飛び、回転し、大きくなります。

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る