特定の環境でSplide.jsが動かない時はprefers-reduced-motionの存在を疑うべし
Splide.jsに限った話ではありませんが、特定の環境で特定のライブラリが動かない時(想定と異なる動きをする時)は、prefers-reduced-motion
の存在をまず疑うと良いかもしれません、というお話です。
prefers-reduced-motionについては以前以下の記事でも触れていますが、簡単に言うと、ユーザーが動きを制限するためのメディアクエリです。
関連: OSの設定では視差効果をオフに、でもブラウザではその設定を適用しない、という事は現状できない
実装的に問題がないはずなのにでも何故か特定の環境だけで動かないといった事はフロントエンド開発では時折遭遇することがありますが、調査する際にprefers-reduced-motion
の存在を疑うということは意外と見落とされがちです。
Splide.jsではprefers-reduced-motion
がreduce
の場合、スライドの自動再生がデフォルトで無効になります。
ビジネスライクなPC(特にWindowsのビジネスLaptopなど)ではアニメーションを敢えて無効にしている場合があり、何故か動かないという事が割とナチュラルに起こり得る状況です。
そして使用者は無効にしていること自体を意識していないので「動かないので直して欲しい」とシンプルなFBを送り、実装者は「こちらでは普通に動いているし、調べてもいまいちよく分からない謎のFB」が発生し夜な夜な調査に明け暮れることになる、という事が起こり得ます。
勿論本来だとprefers-reduced-motion
がreduce
な場合スライドが自動再生されないが適切な挙動なのですが、仕様に盛り込んでいる場合を除いてそういう訳にはいかない場合が殆どでしょう。
Splide.jsではこういった場合に対応する為に、reducedMotion
というオプションが用意されています。
new Splide( '.splide', { reducedMotion: { autoplay: true, speed: 800 }});
関連: Splide.js - Reduced Motion
reducedMotion
でautoplay
やspeed
を設定することで、prefers-reduced-motion
がreduce
の場合でもスライドが自動再生されるよう上書きすることができます。
これはあくまでSplide.jsの例ですが、アクセシビリティー対応が進む昨今では他のライブラリでも同様の対応がされている場合があるはずです。
こういった特定の環境で動かない時はprefers-reduced-motion
の存在を疑うというのは一つの手かもしれませんし、チェック項目に盛り込んでおくと良いと思います。
そして出来れば事前に仕様に盛り込み、Splide.jsで言う所のreducedMotion
オプションを用いて上書きする必要のない状況にしておく事が望ましいでしょう。
アニメーションを不要とするユーザーにも快適に使ってもらえるようなサイトを目指していきたいですし、この辺りはデザインの段階で考慮しておくべき内容でもあると思います。