Une interface en rotation est agréable à explorer et pénible à subir. Certains visiteurs ont activé la réduction des animations au niveau du système, d’autres arrivent sur un appareil sans WebGL utilisable ou sur une connexion mesurée. D’autres encore veulent simplement lire.
Le repli est le cas par défaut
Le HTML rendu par le serveur est toujours la liste d’articles, avec de vrais liens. La scène 3D vient se poser par-dessus lorsque le mode le permet. Cet ordre compte : l’inverse — une page vide qu’un script doit remplir — casse le référencement, la navigation au clavier et le fonctionnement sans JavaScript.
Le mode se décide avant le premier affichage
Un petit script bloquant dans le head lit la préférence mémorisée, ou l’infère :
prefers-reduced-motion: reduce,- absence de contexte WebGL,
saveDataou connexion très lente.
Il pose un attribut sur la racine du document, et le CSS s’aligne dessus. Décider plus tard reviendrait à afficher brièvement le mauvais mode.
Ce que le mode simplifié ne télécharge pas
Three.js pèse environ 90 Ko compressés. Isolé derrière un import() dynamique, il
n’est demandé que lorsque la scène démarre réellement. Le mode simplifié ne paie donc
pas la 3D qu’il n’affiche pas — c’est le seul critère qui prouve que la séparation
est réelle et pas seulement visuelle.