我希望我的页面以一个简单的动画开始,它介绍了我可以做的“嗨,我的名字是保罗,我做网站”之类的事情。
为了实现它,我认为使用 Javascript Web Animations API 将是一个很好的机会来立即展示我使用 vanilla javascript 的能力(我正在制作部分来展示我使用框架和 WordPress 的能力),但是,在开始之后我注意到了一些发生了奇怪的事情,可能是因为我没有正确使用它。
const fade = (a = 0, b = 1) => {
return [
{ opacity: a },
{ opacity: b }
];
}
const glideX = (a = '-10000px', b = '0px') => {
return [
{ marginLeft: a, position: 'absolute' },
{ display: 'block', offset:0.1 },
{ marginLeft: b, position: 'unset' }
];
}
const glideY = (a = '-10000px', b = '0px') => {
return [
{ marginTop: a, position: 'absolute' },
{ display: 'block', offset:0.1 },
{ marginTop: b, position: 'unset' }
];
}
const animateSettings = (dur = 1500, it = 1, fill = 'forwards', ease = 'ease-in-out') => {
return {
duration: 1500,
iterations: 1,
fill: 'forwards',
easing: 'ease-in-out'
};
}
const start = h1.animate( fade(), animateSettings() );
start.onfinish = () => {
myNameIs.style.display = 'block';
const nameIn = myNameIs.animate( glideX(), animateSettings() );
nameIn.onfinish = () => {
const welcomeGo = h1.animate ( glideY( '0px', '10000px' ), animateSettings() )
welcomeGo.onfinish = () => {
console.log('all done');
}
}
}
Codepen:https ://codepen.io/makingstuffs/pen/xxKVoKK
我希望初始文本 Hi 淡入。完成后,我希望我的名字是 Paul 从左侧进入。完成后,我希望 Hi 掉入页面。
这是动画的开头三帧,我已经使用 onfinish 事件/承诺让它工作。
然而,一个问题是最后一帧似乎也影响了前一帧的文本。
我想问这是否是我使用 API 的结果,或者这是否是 API 中的错误,我最好简单地使用 CSS 关键帧和链接事件侦听器来侦听每个转换完成和然后应用特定的关键帧类?