跳过主要内容

MotionPathPlugin.getRelativePosition

MotionPathPlugin.getRelativePosition( fromElement:Element | window, toElement:Element | window, fromOrigin:Array | Object, toOrigin:Array | Object | String ) : Object

获取两个元素之间的 x 和 y 距离,无论是否存在嵌套变换!给该方法传入两个元素,它将根据 fromElement 父级的坐标系统返回它们之间的空隙作为一个点 {x, y}。

参数

  • fromElement: 元素 | window

    以此元素作为距离测量的起点(通常是这个将要被移动到目标位置的元素)toElement)

  • toElement: 元素 | window

    目标元素。这应该是一个元素引用(例如 myElem),而不是一个选择器字符串(例如 "#myElem")。

  • fromOrigin: 数组 | 对象

    [可选] 确定toElement上的哪个点需要被对齐。可以是一个包含x和y轴进度值的数组,如fromElement作为测量原点的对象或数组。它既可以是像下面这样的包含 x 和 y 轴上进度值的数组[0.5, 0.5](中心),[1, 0](右上角)等,或者一个带有基于像素的本地坐标的点对象,例如:{x: 100, y: 0}

  • toOrigin: 数组 | 对象 | 字符串

    [可选] 确定toElement上的哪个点需要被对齐。可以是一个包含x和y轴进度值的数组,如toElement测量的目标位置。它可以是像以下这样的包含 x 和 y 轴上进度值的数组[0.5, 0.5](中心),[1, 0](右上角)等,或者一个带有基于像素的本地坐标的点对象,例如:{x: 100, y: 0}或者,如果toElement是<path>元素,则可以使用"auto"来与路径本身的起点对齐,而不是使用包围盒。

返回值:对象

一个带有 "x" 和 "y" 属性的对象,表示每个轴上的距离

细节

获取两个元素之间的 x 和 y 距离,而无需考虑嵌套变换!向该方法传入两个元素,它会返回代表两者间隙的坐标点{x, y}基于 fromElement 的父级坐标系进行计算。默认情况下,它会对齐它们的左上角(边界框),但你可以为每个元素定义不同的原点,例如[0.5,&#xA0;0.5]表示中心,[1,&#xA0;1]表示右下角,依此类推。

示例代码

let inner = document.querySelector("#inner"),
dot = document.querySelector("#dot"),
delta = MotionPathPlugin.getRelativePosition(
dot,
inner,
[0.5, 0.5],
[0.5, 0.5]
);
gsap.to(dot, {
x: "+=" + delta.x,
y: "+=" + delta.y,
duration: 2,
ease: "power2.inOut",
});

视频

示例 1

加载中...

示例 2

你还可以定位指针坐标,比如在下面的示例中(点击任意位置)

加载中...

`getRelativePosition()` 在 GSAP 3.2.0 中新增

无噪 Logo
无噪文档
中文文档 · 复刻官网
查看所有 ↗