mirror of
https://github.com/Xevion/xevion.dev.git
synced 2026-01-31 04:26:43 -06:00
feat: add fade-in transition for dots canvas background
This commit is contained in:
@@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
let canvas: HTMLCanvasElement;
|
let canvas: HTMLCanvasElement;
|
||||||
let cleanupFns: (() => void)[] = [];
|
let cleanupFns: (() => void)[] = [];
|
||||||
|
let ready = $state(false);
|
||||||
|
|
||||||
function addCleanup(fn: () => void) {
|
function addCleanup(fn: () => void) {
|
||||||
cleanupFns.push(fn);
|
cleanupFns.push(fn);
|
||||||
@@ -363,6 +364,7 @@
|
|||||||
|
|
||||||
const startTime = Date.now();
|
const startTime = Date.now();
|
||||||
let animationId: number;
|
let animationId: number;
|
||||||
|
let firstFrameRendered = false;
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
if (document.hidden) {
|
if (document.hidden) {
|
||||||
@@ -379,6 +381,15 @@
|
|||||||
gl.clear(gl.COLOR_BUFFER_BIT);
|
gl.clear(gl.COLOR_BUFFER_BIT);
|
||||||
gl.drawArrays(gl.TRIANGLES, 0, 6);
|
gl.drawArrays(gl.TRIANGLES, 0, 6);
|
||||||
|
|
||||||
|
if (!firstFrameRendered) {
|
||||||
|
firstFrameRendered = true;
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
ready = true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
animationId = requestAnimationFrame(render);
|
animationId = requestAnimationFrame(render);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -395,5 +406,9 @@
|
|||||||
|
|
||||||
<canvas
|
<canvas
|
||||||
bind:this={canvas}
|
bind:this={canvas}
|
||||||
class={cn("pointer-events-none fixed inset-0 -z-10", className)}
|
class={cn(
|
||||||
|
"pointer-events-none fixed inset-0 -z-10 transition-opacity duration-1300 ease-out",
|
||||||
|
ready ? "opacity-100" : "opacity-0",
|
||||||
|
className,
|
||||||
|
)}
|
||||||
></canvas>
|
></canvas>
|
||||||
|
|||||||
Reference in New Issue
Block a user