rect.animate().move(150, 150)

animate()方法将接受三个参数。第一个是持续时间(duration),第二个是延迟(delay),第三个是何时(when):

rect.animate(2000, 1000, 'now').attr({ fill: '#f03' })

或者,您可以传递一个对象作为第一个参数,它接受更多的参数:

rect.animate({
  duration: 2000,
  delay: 1000,
  when: 'now',
  swing: true,
  times: 5,
  wait: 200
}).attr({ fill: '#f03' })

默认情况下,持续时间(duration)将设置为400,延迟(delay)将设置为0,时间(when)设置为after。

when参数指定动画的起点。它可以具有以下值:

  • now: 在执行此调用后立即播放动画
  • absolute or start: 安排动画在时间轴上的绝对时间运行
  • relative: 安排动画相对于其旧的开始时间播放(对于animate()-调用不有用)
  • last or after: 在时间轴上最后一个动画之后播放动画。如果没有,则立即播放动画(请参见)

通过再次调用animate,可以将多个动画链接在一起:

rect.animate().attr({ fill: '#f03' }).animate().dmove(50,50)

还可以在动画之间添加延迟:

rect.animate().attr({ fill: '#f03' }).delay(200).animate().dmove(50,50)

当然,这也可以通过向第二次动画添加延迟来完成:

rect.animate().attr({ fill: '#f03' }).animate({delay: 200}).dmove(50,50)

SVG.Runner

animate()方法不会返回目标元素,而是返回SVG的一个实例。Runner具有与任何元素相同的方法和控制运行器的其他方法:

let rect = draw.rect(100, 100)
let runner = rect.animate()
runner.element() // 返回或设置runner绑定到的元素
runner.timeline() // 返回或设置runner计划的时间线
runner.animate() // 用于动画链接。请参见element.animate()
runner.schedule(timeline, delay, when) // 在timeline上安排runner。如果已设置timeline,则可以跳过
runner.unschedule() // 从timeline中删除runner
runner.loop(times, swing, wait) // 将动画循环“times”次,每次循环之间的时间为“wait”毫秒
runner.queue(runOnceFn, runOnEveryStepFn) // 允许您链接非必要动画的函数
runner.during(fn) // 用于将函数绑定到每个动画步骤
runner.after(fn) // 用于绑定动画完成后执行的函数
runner.time() // 返回或设置runner时间
runner.duration() // 返回runner运行的持续时间
runner.loops() // 让您跳转到runner的特定迭代,例如第4个循环中途的3.5
runner.persist() // 让这位runner永远(真)或在特定时间内坚持在时间线上。通常在执行后删除运行程序以清理内存。
runner.position() // 返回或设置runner的当前位置,忽略等待时间(介于0和1之间)
runner.progress() // 返回或设置runner的当前位置,包括等待时间(介于0和1之间)
runner.step(dt) // 按一定时间步进runner(用于手动步进槽动画)
runner.reset() // 将runner设置回零时间,并使用它设置所有动画
runner.finish() // 使runner逐步进入完成状态
runner.reverse() // 向后执行runner
runner.ease() // 更改动画的缓和程度
runner.active() // 返回或设置runner的活动状态。不执行非活动runner

runner通常通过调用animate来创建。但是,可以在没有元素的情况下创建runner,然后再设置元素:

var runner = new SVG.Runner(1000)
runner.move(100, 100)
runner.element(someElement)
// Step animation by 20ms
runner.step(20)
// To animate, we need a timeline on which the runner is run
var timeline = new SVG.Timeline()
timeline.schedule(runner)
不要对建筑大意。
 BUG:缩小版本不起作用
原因:svgElem.reRunMixin 使用 function.name 属性来执行对象克隆的一些逻辑,但库被混淆了名称丢失。 好吧他妈的我...
 最后更新时间 10:54 pm(2014 年 1 月 4 日)Jordan Yu,2014
vue-svg允许您根据您提供的以多种方式导入.svg文件。 目前,这允许您执行以下操作:
 file.svg - 使用file-loader正常导入
file.svg?data - 使用url-loader导入 base64 数据 url
 file.svg?inline - 使用vue-svg-loader内联导入
file.svg?sprite - 使用svg-sprite-loader导入(alpha 实现)
使用新的 ,就像导航到您的项目并运行一样简单: 
$ vue add svg
 而已! 你准备好了!
使用示例记录为: 
 <!-- Vue.js code --> 
 <!-- Outputted html -->
标准外部进口
使用file-loader通常作为外部
该存储库包含在基于浏览器的SVG之上添加3D功能的代码。 它建立在。
 看一个例子动画,和它的源代码。 该页面显示了以下动画内容:
 这是处于pre-alpha状态。 它只是一个原型/实验,如果要向前发展,就需要对其进行记录,测试,增强,以及引入的构建系统等。
我想进行的一些增强包括这些。
 创建一个Mesh类,该类是Polygon的集合。
 使用细分算法(包括折痕和清晰度参数)扩展Mesh类。 (这尤其重要,因为由于SVG的限制,目前遮挡算法有时仅是正确的。可以通过将大多边形分成许多小多边形来使其变得更好。)
 添加常见形状的类,例如:
yarn add @svgdotjs/svg.filter.js
 在html文档中包含svg.js库之后,请包含此插件。
 这是在示例页面上如何实现每种过滤效果的方法。
色相旋转180
 亮度到alpha
伽玛正确1
 伽玛校正2
 var image = draw . image ( 'path/to/image.jpg' ) . size ( 300 , 300 )
 image . filterWith ( function ( add ) {
  add . gaussianBlur ( 30 
                                    工作流-svg.js
 workflow-svg.js是一个 JS 库,用于将工作流呈现和编辑为 SVG。 您可以移动实体并定义它们之间的连接。 为您的项目包含和配置它很简单。 在上看一个真实的例子。
使用npm i workflow-svg.js安装库。 就这些。
 安装时,将安装两个额外的库。 首先导入它们:
 svg.js: [removed][removed]
 svg.draggable.js [removed][removed]
 如果你想与 IE11 兼容,你也必须导入 svg.js Polyfills:
 <script s