如何在anime.js中设置目标元素的初始位置?
How to setup initial position of target element in anime.js?
目标
点击“打开菜单”按钮:
- 淡淡的叠加层出现淡入动画
- 暗淡叠加动画完成后,从顶部开始,暗淡叠加动画从上到下出现:
解决方案尝试和问题
<template>
<transition @enter="animateOpening" @leave="animateClosing">
<div
class="SearchProductsPane-DimUnderlay"
v-if="isOpen"
:ref="elementsReferencesIDs.overlay"
>
<div
class="SearchProductsPane-Body"
:ref="elementsReferencesIDs.body"
>
<!-- ... -->
</div>
</div>
</transition>
</template>
import { Vue, Component } from "vue-property-decorator";
import Animation from "animejs";
@Component
export default class SearchProductsPane extends Vue {
private elementsReferencesIDs: Record<"overlay" | "body", string> = {
overlay: "Overlay", body: "Body"
};
private animateOpening(_element: Element, done: () => {}): void {
Animation
.timeline({
easing: "linear",
duration: 500,
complete: done
})
.add({
targets: this.$refs[this.elementsReferencesIDs.overlay],
opacity: [0, 1]
})
.add({
targets: this.$refs[this.elementsReferencesIDs.body],
translateY: "100%"
})
}
private animateClosing(): void {
}
}
使用当前的解决方案,.SearchProductsPane-Body
将从正常位置移动到屏幕的下方。而不是它,我需要它从屏幕外部向上移动到正常位置。
我尝试通过添加以下内容来达到它 class:
.SearchProductsPane-Body__InitialPosition {
transform: translateY(-100%);
}
但是,animejs
动画从 0%
开始,而不是 -100%
。怎么改?
目标
点击“打开菜单”按钮:
- 淡淡的叠加层出现淡入动画
- 暗淡叠加动画完成后,从顶部开始,暗淡叠加动画从上到下出现:
解决方案尝试和问题
<template>
<transition @enter="animateOpening" @leave="animateClosing">
<div
class="SearchProductsPane-DimUnderlay"
v-if="isOpen"
:ref="elementsReferencesIDs.overlay"
>
<div
class="SearchProductsPane-Body"
:ref="elementsReferencesIDs.body"
>
<!-- ... -->
</div>
</div>
</transition>
</template>
import { Vue, Component } from "vue-property-decorator";
import Animation from "animejs";
@Component
export default class SearchProductsPane extends Vue {
private elementsReferencesIDs: Record<"overlay" | "body", string> = {
overlay: "Overlay", body: "Body"
};
private animateOpening(_element: Element, done: () => {}): void {
Animation
.timeline({
easing: "linear",
duration: 500,
complete: done
})
.add({
targets: this.$refs[this.elementsReferencesIDs.overlay],
opacity: [0, 1]
})
.add({
targets: this.$refs[this.elementsReferencesIDs.body],
translateY: "100%"
})
}
private animateClosing(): void {
}
}
使用当前的解决方案,.SearchProductsPane-Body
将从正常位置移动到屏幕的下方。而不是它,我需要它从屏幕外部向上移动到正常位置。
我尝试通过添加以下内容来达到它 class:
.SearchProductsPane-Body__InitialPosition {
transform: translateY(-100%);
}
但是,animejs
动画从 0%
开始,而不是 -100%
。怎么改?