面试题答案
一键面试实现思路
- 在Svelte组件中定义列表数据。
- 为每个列表项分配不同的时间函数。这可以通过在数据中为每个项添加一个表示时间函数的属性来实现。
- 使用Svelte的
transition
功能来应用动画,在transition
中指定每个列表项对应的时间函数。
核心代码示例
<script>
const items = [
{ name: 'Item 1', timingFunction: 'ease - in' },
{ name: 'Item 2', timingFunction: 'ease - out' },
{ name: 'Item 3', timingFunction: 'ease - in - out' }
];
function slideIn(node, { delay = 0, duration = 400, timingFunction }) {
const style = getComputedStyle(node);
const opacity = +style.opacity;
const x = +style.transform.slice(12, -1);
return {
delay,
duration,
css: t => `
opacity: ${t * opacity};
transform: translateX(${t * x}px);
transition - timing - function: ${timingFunction};
`
};
}
</script>
{#each items as item}
<div transition:slideIn={{ delay: 100, duration: 500, timingFunction: item.timingFunction }}>{item.name}</div>
{/each}
上述代码首先定义了包含列表项数据的数组items
,每个项都有一个名称和对应的时间函数。然后定义了slideIn
函数,用于创建自定义过渡动画。在each
块中,每个div
元素都应用了slideIn
过渡动画,并传入了对应项的时间函数。