← 全部文章

教程

关闭动画、视差和自动播放 —— 一个更安静的页面

每次滚动都跳动的视差。自己动的轮播。自动播放的视频。对一些人这只是个讨厌的东西,对另一些人是个真实的问题(前庭失调、疲劳)。一条规则在一个页面上平息运动。

运动的三个来源

CSS 规则 —— 动画和滚动

*, *::before, *::after {
  animation-duration: 0.01ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: 0.01ms !important;
}
html { scroll-behavior: auto !important; }

我们故意用 0.01ms 而不是 0s:动画仍然「发生」,所以监听 animationend 事件的页面代码照样收到它,不会卡在等待里。在眼里,运动消失了。

JS 规则 —— 停止视频自动播放

function stopVideos() {
  document.querySelectorAll('video').forEach(v => {
    v.removeAttribute('autoplay');
    if (!v.paused) v.pause();
  });
}
stopVideos();
new MutationObserver(stopVideos)
  .observe(document.body, { childList: true, subtree: true });

更好的做法:尊重系统的「减少动态效果」

你的操作系统有一个「减少动画」设置。页面本应通过 prefers-reduced-motion 读取它 —— 但许多页面不读。如果你在系统里开了那个选项,这条规则只是把页面没能尊重的东西强制执行。

另见

安装 JustZix —— 浏览时别让页面跳舞。

为这篇文章评分

暂无评分 — 成为第一个。

自己动手试试

安装 JustZix,粘贴本文中的任意代码片段。两分钟,从零到一条在你所有设备上生效的规则。

获取 JustZix

功能 · 工作原理 · 示例 · 应用场景