Flip.from
Flip.from(状态:FlipState,参数:Object):Timeline
立刻移动/调整目标以匹配提供的state对象,然后反向动画以移除这些偏移,最终达到当前状态。默认情况下,使用width和height属性进行调整,但你可以设置useScale: true改为使用缩放(变换)。它返回一个时间轴动画,因此你可以控制它或add()其他动画。state
statewidth
和height
width/heightscale: true
useScale: true
参数
状态:FlipState
从以下方式获取的状态:Flip.getState().
vars: 对象
用于from动画的vars。你可以使用任何标准tween特殊属性,例如
ease
,duration
,onComplete
,等等。
返回值:时间线(Timeline)
A 时间线animation
细节
立刻移动/调整目标以匹配提供的state对象,然后反向动画以移除这些偏移,最终达到当前状态。默认情况下,使用width和height属性进行调整,但你可以设置useScale: true改为使用缩放(变换)。它返回一个时间轴动画,因此你可以控制它或add()其他动画。state
statewidth
和height
width/heightscale: true
useScale: true
用法
“FLIP” 动画通常包括以下三个步骤:
-
获取当前状态
// returns a state object containing data about the elements' current position/size/rotation in the viewport
const state = Flip.getState(".targets");这只是捕获有关当前状态的一些数据。可以使用选择器字符串、Element、元素数组或 NodeList。Flip.getState()不会修改任何内容(除非有活跃的 flip 动画影响其中任何一个目标,在这种情况下它会强制完成该动画以便准确捕捉最终状态)。默认情况下,Flip 只关注位置、尺寸、旋转和倾斜。如果你想让 Flip 动画影响其他 CSS 属性,你可以定义一个配置对象,并列出逗号分隔的
props
列表,例如:// record some extra properties (optional)
const state = Flip.getState(".targets", { props: "backgroundColor,color" }); -
做出你的状态更改
执行 DOM 编辑、样式更新、添加/删除类,或任何必要的操作以达到最终状态。无需通过插件来做这件事(除非你正在批量处理)。例如,我们可以切换一个类:
// make state changes. We'll toggle a class, for example:
element.classList.toggle("full-screen"); -
调用
Flip.from(state, options)
Flip 会查看
state
对象,比较记录的位置/尺寸和当前的位置/尺寸,立即重新定位/调整它们大小以看起来像是在上一状态中的样子,然后动画式地移除移除这些偏移。你可以指定几乎任何标准 tween 的特殊属性,例如duration
,ease
,onComplete
,等等。Flip.from()返回一个时间轴,你可以向其添加add()
内容或以任何方式控制它:// animate from the previous state to the current one:
Flip.from(state, {
duration: 1,
ease: "power1.inOut",
absolute: true,
onComplete: myFunc,
});
你可以同时翻转多个元素。stagger
用来错开它们的开始时间。
特殊属性
这个Flip.from()
参数对象(第二个参数)可以包含以下任选属性另外也可以包含任何标准 tween 属性,例如duration
, ease
, onComplete
,等等。其描述见于别处。别处:
属性 | 描述 |
---|---|
absolute | Boolean | String | Array | NodeList | Element- 指定哪些目标应在 FLIP 动画过程中应用 |
absoluteOnLeave | Boolean- 如果设置为 |
fade | Boolean- 默认情况下,如果与某个特定 |
嵌套 | Boolean- 如果 Flip 有嵌套的目标(比如父元素和子元素都在 |
onEnter | 函数- 如果某个目标在原始
|
onLeave | 函数- 如果某个目标存在于原始
|
props | 字符串- 一个逗号分隔的驼峰式CSS 属性列表,除了标准的定位/尺寸/旋转/倾斜属性之外,还应包括这些属性在翻转动画中。例如, |
prune | Boolean- 如果设置为 |
scale | Boolean- 默认情况下,Flip 会通过修改 |
simple | Boolean- 如果设置为 |
spin | Boolean | Number | Function- 如果设置为
|
targets | String | Element | Array | NodeList- 默认情况下,Flip 将使用来自 |
切换类 | 字符串- 在整个翻转动画过程中立即将zIndex CSS属性设置为此值,然后在结束时恢复。这使得确保您的翻转元素在动画期间位于其他元素之上变得简单,例如。 |
zIndex | 数字- 在整个翻转动画过程中立即将zIndex CSS属性设置为此值,然后在动画结束时恢复原状。例如,这使得你可以轻松确保动画期间你的翻转元素位于其他元素之上。 |
简单示例
加载中...
弹性布局(Flex)示例
加载中...
如何在两个不同的元素之间进行翻转动画?
Flip会在每个与之交互的元素上查找一个data-flip-id(通过Flip.getState()data-flip-id
属性,如果找不到,Flip会自动分配一个递增的ID(例如"auto-1"、"auto-2"等)。它允许你关联目标("from"状态中具有特定data-flip-id的目标会与end状态中具有相同data-flip-id的目标匹配)。这个data-flip-id可以是任意字符串,不仅仅是数字。Flip.getState()或者Flip.from()等等)并且如果没有找到,Flip会自动分配一个递增的ID(比如“auto-1”,“auto-2”等)。它让你可以关联目标(在“from”状态中有data-flip-id的目标会被与end状态中有相同data-flip-id的目标匹配)。data-flip-id可以是任意字符串,不只是数字。data-flip-id
id 为"5"
data-flip-iddata-flip-id
id 为"5"
设置为true时,请记住坐标将基于当前视口进行计算,因此如果在翻转过程中视口大小发生变化或用户滚动页面,可能会影响定位(但在翻转完成后且偏移量被移除之后,元素将会回到正确的位置)。换句话说,进行中的翻转并不总是响应式的。data-flip-id
data-flip-id
因此如果你想要在两个不同的目标之间翻转,请确保end状态中的data-flip-id属性与"from"状态中的一致。当Flip看到from/end状态中有两个相同值的data-flip-id时,它会自动判断哪一个正在消失(通常带有display: none),并以此为基础进行“交换”元素操作。如果你希望它们交叉淡入淡出,只需设置crossfade: true,否则它们会立即交换。通常最好设置absolute: true,以便Flip修改position值时不会影响文档流。display: none
display: nonefade: true
crossfade: trueabsolute: true
absolute: truedisplay
position