跳到主要内容

把网站做成视频:如何让它自动滚动

录制时让网页自己滚动的三种方式:浏览器自带的自动滚动、一段可直接复制的控制台脚本,以及渲染器。还有滚多快、用哪条缓动曲线。

Aviral Lakhanpaul更新于 阅读约 4 分钟

简短回答

别用手滚。要么在录屏软件运行时,把一段简短的脚本粘贴到浏览器控制台,让页面在固定时间内沿缓动曲线滚动;要么把网址交给一个渲染器,由它计算滚动并生成视频,完全不需要录屏软件。起步节奏可以按页面每一屏高度大约两秒来算。

自动滚动的三种方式

为视频让网页自动滚动的方式
方式速度控制缓动需要录屏软件
浏览器自动滚动(鼠标中键点击)手动,靠指针控制无需要
控制台脚本精确到秒你写的任何曲线需要
网址转视频渲染器精确到秒从预设中选择不需要

浏览器自动滚动,也就是在 Windows 和 Linux 上点一下鼠标中键进入的模式,最顺手,也最不中用:速度取决于指针离你点击的位置有多远,所以会忽快忽慢,而且指针必须留在屏幕上才能操控。拿来粗略录一下没问题,要发布的视频就不行了。

一段替你滚动页面的脚本

打开页面,打开开发者工具(F12,Mac 上是 ⌥ ⌘ I),把下面的代码粘贴到控制台(Console)里,按回车。它会先等三秒,让你启动录屏软件,然后在你设定的时间内沿一条缓入缓出曲线从顶部滚到底部。

控制台脚本:平滑滚动整个页面
const SECONDS = 20;        // 滚动持续多久
const WAIT = 3;            // 留给你启动录屏软件的时间

document.documentElement.style.scrollBehavior = 'auto';
window.scrollTo(0, 0);

const end = document.documentElement.scrollHeight - innerHeight;
const ease = (t) => (t < 0.5 ? 4 * t ** 3 : 1 - (-2 * t + 2) ** 3 / 2);

setTimeout(() => {
  const start = performance.now();
  const step = (now) => {
    const t = Math.min(1, (now - start) / (SECONDS * 1000));
    window.scrollTo(0, end * ease(t));
    if (t < 1) requestAnimationFrame(step);
  };
  requestAnimationFrame(step);
}, WAIT * 1000);
  • scrollBehavior = 'auto' 很关键。很多网站设置了 scroll-behavior: smooth,它会把脚本的每一次小幅移动都变成一段单独的动画,卡顿立刻就回来了。
  • requestAnimationFrame 在每一个显示帧移动一次页面,所以滚动能均匀到显示器允许的极限。
  • 运行之前先手动滚到底再滚回来一次,让懒加载的图片提前就位,页面高度就不会在录制中途变化。
  • 基于 Lenis 或 Locomotive Scroll 这类平滑滚动库搭建的网站会自己处理滚动,可能会和脚本打架。如果页面滚得一冲一顿,原因就在这里。

或者干脆不用录屏软件

脚本仍然把帧率交给了你的录屏软件和电脑。渲染器把这两者都去掉了:Website Scroll Video 先把整个页面读取一遍,再为一段锁定 24、30 或 60 fps 的视频逐帧计算页面应在的位置,所以再重的页面也不会掉帧,再长的页面也不会跑偏。你设定的东西和脚本一样,按秒、按曲线,而且在花任何点数之前就能预览结果。

应该滚多快?

以“屏”为单位量一下页面:页面总高度除以窗口高度。一个典型的落地页有五到八屏。然后:

按用途划分的滚动节奏
用途每屏秒数八屏的页面
预告或社交媒体短片约 1 秒8 秒
作品集或展示约 2 秒16 秒
可供阅读的导览3 秒或以上,或加停顿24 秒或以上

比一秒一屏还快,文字就会糊成一片,在 30 fps 或 GIF 里尤其明显。比三秒一屏还慢,观众就会走神。如果某个区块比其他的更重要,在那里停顿一下,比整个页面都放慢要好;Website Scroll Video 最多支持 6 处停顿,每处 0.5 到 5 秒。

用哪条缓动曲线

  • 柔和(缓入缓出)。 从静止起步,平稳行进,再回到静止。默认就该用它:两端看起来都是有意为之,而不是被硬生生截断。
  • 滑行(缓出)。 起步很快,随后慢慢滑停,就像在触控板上轻轻一甩。适合需要一开场就有劲头的短预告。
  • 匀速。 全程一个速度。最适合背景循环,因为任何节奏变化都会引人注目。
  • 脉冲。 移动一个区块,停稳,再移动。看起来像有人在一页页翻看网站,很适合产品导览。

让它循环

一段往下滚、然后直接切回顶部的视频,循环时会有明显的跳动。改为沿同一条曲线往下滚再滚回顶部:最后一帧和第一帧对上,循环就天衣无缝。在 Website Scroll Video 里,这就是「往返滚动」播放模式,还可以选择在返回前于底部停留,以及在循环重新开始前于顶部停留。

拿你自己的网站试试

粘贴一个链接,免费预览滚动效果。注册即送 51 个免费点数,无需信用卡,导出的任何视频都没有水印。

最近搜索

    常见 问题

    大家接下来常问的,这里简短作答。

    联系我们
    怎样让网页自动滚动?

    点一下鼠标中键再移动指针,可以使用浏览器自带的自动滚动;或者把一小段脚本粘贴到开发者工具的控制台里,让它沿缓动曲线每帧调用一次 window.scrollTo。用来录视频的话,脚本要均匀得多。

    Chrome 有自动滚动的设置吗?

    Windows 和 Linux 上的 Chrome 支持鼠标中键自动滚动,但速度跟着指针走。它没有内置的定时滚动。扩展可以加上这个功能,或者用控制台脚本或网址渲染器。

    怎样让网站滚动视频顺畅地循环?

    沿同一条曲线往下滚再滚回顶部,让最后一帧和第一帧对上,而不是从页面底部直接切回顶部。

    Website Scroll Video 标志:浏览器窗口中的网页上叠着一个播放按钮。

    少花时间录制,多花时间创造。

    用可自定义的运动、聪明的控件和为当代创作者设计的导出选项,把网站录制自动化。