diff options
| author | Fuwn <[email protected]> | 2026-05-15 09:02:42 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-05-15 09:02:42 +0000 |
| commit | b2fe8acbfeedbfff6b49019764e56570555be392 (patch) | |
| tree | 8a459e4181ecf6942f50e5b5ea705b355e03fed6 /src/routes | |
| parent | fix(a11y): restore focus-visible ring (diff) | |
| download | due.moe-b2fe8acbfeedbfff6b49019764e56570555be392.tar.xz due.moe-b2fe8acbfeedbfff6b49019764e56570555be392.zip | |
feat(a11y): respect prefers-reduced-motion
Add a global reduced-motion media query that collapses animation and
transition durations and disables smooth scroll. Skip Lenis init when
the same preference is set so the JS-driven smooth scroll falls back to
the browser default, which the spec already honours.
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/+layout.svelte | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index e1677b44..4aaf2159 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -98,9 +98,11 @@ const handleScroll = () => { onMount(async () => { if (browser) { - lenis = new Lenis({ autoRaf: true }); + if (!window.matchMedia("(prefers-reduced-motion: reduce)").matches) { + lenis = new Lenis({ autoRaf: true }); - lenisStore.set(lenis); + lenisStore.set(lenis); + } if (await localforage.getItem("redirect")) { window.location.href = (await localforage.getItem("redirect")) ?? "/"; |