# SVG animation Revealer can inline an SVG file into a slide and reveal or transform its elements step by step, by referencing their `id`. Each step is tied to a reveal.js fragment, so it advances with the arrow keys and reverts when you step back. ## Inlining an SVG Add a `> svg:` command to a slide, with a path relative to the presentation folder: ``` === A diagram > svg: Media/Animated/scheme.svg Some explanatory text. ``` The SVG is embedded directly in the slide (not via ``), which is what makes its inner elements addressable for animation. ## Animation steps Each `> animate:` line defines one step. Its syntax is: ``` > animate: [,] :[; :] [@ ] ``` * **selector** — one or more CSS selectors (typically `#id`) targeting elements inside the SVG. Several selectors can be comma-separated. * **attributes** — one or more `name:value` pairs, separated by `;`. They are applied as SVG attributes (`opacity`, `fill`, `transform`, …). * **duration** *(optional)* — the transition time for this step, written after an `@` (e.g. `@ 1s`, `@ 300ms`). Defaults to the global `> svgDuration:` setting (`0.5s`). ### Example ``` === Animated SVG > svg: Media/Animated/demo.svg > animate: #box fill:#0F4C75 > animate: #dot opacity:1; fill:#c0392b @ 1s > animate: #arrow opacity:1 @ 300ms Reveal SVG elements step by step by referencing their id. ``` Here, advancing the slide first colours `#box`, then fades in `#dot` while recolouring it over one second, then reveals `#arrow` quickly. Stepping back restores each element to its original state. ## Tips * Give meaningful `id`s to the elements you want to animate in your SVG editor (Inkscape: *Object Properties → ID*). * Set the SVG's initial state (e.g. `opacity="0"`) directly in the file; the animation moves elements *from* that state. * `transform` animates too — e.g. `transform:translate(100,0)` or `transform:scale(1.5)`. * The default global duration can be changed once for the whole presentation with `> svgDuration: 0.8s` in the settings.