#119·termtosvg

从生成的 SVG 中剪切框架

作者: abitrolly创建于 2020年4月22日更新于 2020年4月22日

我找不到可以编辑由termtosvg生成动画的工具。从格式说明来看,它看起来非常真实。termtosvg动画中的所有帧都是独立的,并存储在svg.svg.defs中(但不进行渲染)。此数组由g#g1,g#g2等元素组成。每个元素都是一个完整的绘制帧。然后,在svg.svg.g#screen_view中,这些元素从上到下放置在一个画布上。然后,对 SVG 视口应用 CSS 样式动画,使其沿 Y 轴滚动。算法似乎很简单:

  1. svg.svg.g#screen_view中找到需要删除的帧的<g>元素,记住其索引
  2. 删除具有相同索引的<g>元素和 CSS 动画规则
2.422%{transform:translateY(-3366px)}
2.681%{transform:translateY(-3740px)}
2.767%{transform:translateY(-4114px)}
  1. 检查删除的<g>元素的 Y 坐标是否与 CSS 坐标匹配
  2. 检查svg.svg.defs中的g#gN元素是否在其他地方引用,并一并删除 唯一的问题是时间。以前的帧现在将暴露更长的时间,并且需要重新调整所有帧之后的 CSS 百分比。因此,动画的结束处会产生暂停。因此,必须缩短绝对的 --animation-duration 时间。但这不会消除动画结束处的暂停 - 所有帧都变得更快了,因为所有百分比都是相对于总动画时长的。

内容来源: nbedos/termtosvg