Skip to content

Commit 01fca52

Browse files
committed
refactor: move mainbird transforms to svelte state
1 parent 11da642 commit 01fca52

1 file changed

Lines changed: 20 additions & 4 deletions

File tree

src/lib/components/MainBird.svelte

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@
44
let mainBird: HTMLDivElement;
55
let birdImg: HTMLImageElement;
66
7+
let angleX = $state("");
8+
let angleY = $state("");
9+
let scale = $state("");
10+
11+
function updateTransform(transform: string) {
12+
birdImg.style.transform = transform;
13+
}
14+
715
function tilt(e: MouseEvent) {
816
const rect = mainBird.getBoundingClientRect();
917
const x = e.clientX - rect.left;
@@ -15,19 +23,23 @@
1523
const rotateY = ((x - centerX) / centerX) * 10;
1624
const rotateX = ((y - centerY) / centerY) * -10;
1725
18-
birdImg.style.transform = `rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(1.10)`;
26+
angleX = `rotateX(${rotateX}deg)`;
27+
angleY = `rotateY(${rotateY}deg)`;
28+
scale = "scale(1.1)";
1929
}
2030
2131
function reset(e: MouseEvent) {
22-
birdImg.style.transform = "rotateX(0) rotateY(0) scale(1)";
32+
angleX = "rotateX(0)";
33+
angleY = "rotateY(0)";
34+
scale = "scale(1)";
2335
}
2436
2537
function press(e: MouseEvent) {
26-
birdImg.style.transform = "scale(1)";
38+
scale = "scale(0.9)";
2739
}
2840
2941
function release(e: MouseEvent) {
30-
birdImg.style.transform = "scale(1.1)";
42+
scale = "scale(1.1)";
3143
}
3244
3345
onMount(() => {
@@ -43,6 +55,10 @@
4355
mainBird.removeEventListener("mousedown", press);
4456
mainBird.removeEventListener("mouseup", release);
4557
});
58+
59+
$effect(() => {
60+
updateTransform(angleX + angleY + scale);
61+
})
4662
</script>
4763

4864
<div bind:this={mainBird} class="main-bird mt-50">

0 commit comments

Comments
 (0)