面试题答案
一键面试- Svelte 代码实现:
<script> import { tweened } from'svelte/motion'; // 定义目标位置,这里假设是页面右下角(根据实际需求调整) const targetX = window.innerWidth - 100; const targetY = window.innerHeight - 100; const position = tweened({ x: 0, y: 0 }, { duration: 1000, easing: tweened.easing.linear }); const moveDiv = () => { position.set({ x: targetX, y: targetY }); }; </script> <button on:click={moveDiv}>点击移动 div</button> <div style="position: absolute; left: { $position.x }px; top: { $position.y }px; width: 100px; height: 100px; background-color: lightblue"> 要移动的 div </div>
- 选择的动画函数原理:
- 这里使用了
tweened
函数,它是 Svelte 中用于创建补间动画的函数。补间动画的原理是在两个值(起始值和目标值)之间进行平滑过渡。tweened
函数会根据指定的持续时间和缓动函数,计算出从起始值到目标值之间的一系列中间值,从而实现平滑的动画效果。
- 这里使用了
- 控制动画的持续时间和缓动效果:
- 持续时间:在
tweened
函数的第二个参数对象中,可以通过duration
属性来设置动画的持续时间,单位是毫秒。例如上面代码中的{ duration: 1000 }
表示动画持续 1000 毫秒(1 秒)。 - 缓动效果:同样在
tweened
函数的第二个参数对象中,通过easing
属性来设置缓动效果。Svelte 提供了一些内置的缓动函数,如tweened.easing.linear
(线性缓动,匀速过渡)、tweened.easing.easeInOutQuad
(二次方缓动,开始和结束时慢,中间快)等。可以根据具体需求选择不同的缓动函数来实现不同的动画效果。
- 持续时间:在