返回

与时俱进!AntV X6构建客户旅程时光轴组件:动画篇

前端

AntV X6 客户旅程时光轴组件的动画进阶指南

在现代商业环境中,客户旅程已成为企业提高客户满意度和留存率的关键。为了可视化和分析客户旅程,AntV X6 提供了强大的客户旅程时光轴组件。本文将深入探讨 AntV X6 的动画功能,展示如何通过生动的动画效果增强用户体验。

1. 前进与倒退:双向行进的时光轴动画

时间是客户旅程中的重要因素。AntV X6 提供双向行进的时光轴动画,让用户可以轻松探索旅程的各个阶段。通过向前或向后移动时光轴,用户可以查看不同时间点的客户旅程状态。

// 代码示例:双向行进的时光轴动画
const timeline = new G6.Timeline({
  container: 'mountNode',
  width: 800,
  height: 600,
  data: data,
  modes: ['time'],
  animate: true,
  on: {
    frame: (e) => {
      console.log(e.detail.timestamp);
    },
  },
});
timeline.play();

2. 元素飞入飞出:点亮关键事件

为了强调客户旅程中的关键事件,AntV X6 提供元素飞入飞出动画。当用户点击事件时,它将从画布外飞入,伴随着放大效果,吸引用户注意力。当鼠标移开时,事件将飞出画布消失。

// 代码示例:元素飞入飞出动画
const timeline = new G6.Timeline({
  container: 'mountNode',
  width: 800,
  height: 600,
  data: data,
  modes: ['time'],
  animate: true,
  on: {
    itemclick: (e) => {
      const item = e.detail.item;
      item.animate({
        onFrame: (ratio) => {
          item.attr({
            opacity: ratio,
            scale: [1 + ratio * 0.2, 1 + ratio * 0.2],
          });
        },
        repeat: false,
      });
    },
  },
});

3. 线条变化:展现发展脉络

在客户旅程时光轴中,线条通常表示客户不同阶段之间的关系。AntV X6 提供线条变化动画,让线条在不同状态之间平滑过渡,展现旅程的发展脉络。例如,任务完成时,连接它的线条会变成绿色。

// 代码示例:线条变化动画
const timeline = new G6.Timeline({
  container: 'mountNode',
  width: 800,
  height: 600,
  data: data,
  modes: ['time'],
  animate: true,
  on: {
    itemclick: (e) => {
      const item = e.detail.item;
      if (item.getModel().type === 'task') {
        item.animate({
          onFrame: (ratio) => {
            item.attr({
              lineStyle: {
                stroke: `rgb(${255 - ratio * 255}, ${ratio * 255}, 0)`,
              },
            });
          },
          repeat: false,
        });
      }
    },
  },
});

结语

AntV X6 的动画功能为客户旅程时光轴组件带来了新的活力。通过利用双向行进、元素飞入飞出和线条变化动画,您可以将关键事件、时间节点和关系生动地呈现出来,从而为用户带来更直观、难忘的体验。

常见问题解答

  1. 如何启用时光轴动画?
    答:在创建时光轴对象时,将 animate 属性设置为 true

  2. 如何控制动画速度?
    答:通过 animateOption 属性,您可以设置动画的持续时间和过渡函数。

  3. 可以自定义动画效果吗?
    答:是的,AntV X6 提供了 onFrame 回调函数,让您可以自定义动画的每一帧。

  4. 如何停止动画?
    答:调用 stop() 方法停止当前正在运行的动画。

  5. 如何从头开始动画?
    答:调用 play() 方法重新开始动画。