面试题答案
一键面试主要步骤
- 定义按钮及目标位置:在 Svelte 组件中定义按钮元素,并确定按钮点击后要移动到的目标位置。可以通过 CSS 的
top
和left
等属性来确定位置,也可以使用更现代的transform
属性的translate
方法。 - 创建动画状态变量:在组件脚本部分,创建一个变量来跟踪按钮是否被点击,从而决定是否触发动画。
- 编写动画逻辑:使用 Svelte 的
transition
功能来定义动画效果。可以使用内置的tweened
过渡(需要从svelte/motion
导入)来实现平滑过渡。 - 应用动画到按钮:将动画逻辑应用到按钮元素上,当按钮点击时,触发动画。
关键代码片段
<script>
import { tweened } from'svelte/motion';
// 定义按钮是否被点击的状态
let isClicked = false;
// 定义目标位置,这里假设是 (200, 200)
const targetX = tweened(0, { duration: 500 });
const targetY = tweened(0, { duration: 500 });
function handleClick() {
isClicked = true;
targetX.set(200);
targetY.set(200);
}
</script>
<button
on:click={handleClick}
style:transform={`translate(${$targetX}px, ${$targetY}px)`}
>
Click me
</button>
在上述代码中:
- 从
svelte/motion
导入tweened
用于创建平滑过渡的动画。 isClicked
变量用于跟踪按钮点击状态。targetX
和targetY
是tweened
变量,初始值为 0,设置了 500 毫秒的过渡时间。handleClick
函数在按钮点击时被调用,设置isClicked
为true
,并将targetX
和targetY
设置为目标位置。- 按钮的
style
属性使用transform
来根据targetX
和targetY
的值移动按钮,$targetX
和$targetY
是访问tweened
变量当前值的语法。