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, 0.5]
表示中心,[1, 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 中新增