From 17a3e45d5ea9fac745aed1ff582ca2e42ebf65d7 Mon Sep 17 00:00:00 2001 From: Alikia2x Date: Sun, 12 May 2024 19:07:32 +0800 Subject: [PATCH] update: responsive ui improvement --- src/lib/components/cover.svelte | 22 ++------- src/lib/components/interactiveBox.svelte | 24 +++++----- src/lib/components/lyrics.svelte | 33 ++++++------- src/routes/+page.svelte | 61 ++++++------------------ src/routes/play/[id]/+page.svelte | 29 +++++++++-- 5 files changed, 69 insertions(+), 100 deletions(-) diff --git a/src/lib/components/cover.svelte b/src/lib/components/cover.svelte index ce8ceec..ef75185 100644 --- a/src/lib/components/cover.svelte +++ b/src/lib/components/cover.svelte @@ -1,5 +1,4 @@ -封面 - - +封面 diff --git a/src/lib/components/interactiveBox.svelte b/src/lib/components/interactiveBox.svelte index f94b7c6..07bedc7 100644 --- a/src/lib/components/interactiveBox.svelte +++ b/src/lib/components/interactiveBox.svelte @@ -9,8 +9,10 @@ export let volume: number = 1; export let clickPlay: Function; export let adjustProgress: Function; + export let adjustRealProgress: Function; export let adjustVolume: Function; - let onSlide = false; + export let onSlide: boolean; + export let setOnSlide: Function; let progressBar: HTMLInputElement; let volumeBar: HTMLInputElement; @@ -18,12 +20,16 @@ adjustProgress(e.target.value / (duration + 0.001)); } + function progressBarOnInput(e: any) { + adjustRealProgress(e.target.value / (duration + 0.001)); + } + function volumeBarOnChange(e: any) { adjustVolume(e.target.value); } -
+
{name}
{singer} @@ -34,10 +40,11 @@ class="progress-bar shadow-md" bind:this={progressBar} on:change={progressBarOnChange} - on:mousedown={() => (onSlide = true)} + on:input={progressBarOnInput} + on:mousedown={() => setOnSlide(true)} on:mouseup={() => { setTimeout(() => { - onSlide = false; + setOnSlide(false); }, 50); }} type="range" @@ -195,13 +202,4 @@ .time-total { right: 0; } - .interactive-box { - user-select: none; - position: absolute; - width: 55vh; - min-width: 27vw; - top: 69vh; - height: 15rem; - left: 10vw; - } diff --git a/src/lib/components/lyrics.svelte b/src/lib/components/lyrics.svelte index 94a42a9..29ab7b2 100644 --- a/src/lib/components/lyrics.svelte +++ b/src/lib/components/lyrics.svelte @@ -37,12 +37,8 @@ for (let i = 0; i < lyrics.length; i++) { const offset = Math.abs(i - currentLyricIndex); const blurRadius = Math.min(offset * 1, 16); - const fontSize = i === currentLyricIndex ? '3.5rem' : '3rem'; - const lineHeight = i === currentLyricIndex ? '4.5rem' : '4rem'; if (refs[i]) { refs[i].style.filter = `blur(${blurRadius}px)`; - refs[i].style.fontSize = fontSize; - refs[i].style.lineHeight = lineHeight; } } if (!found) { @@ -60,7 +56,10 @@ {#if lyrics && originalLyrics} -
+
{#each lyrics as lyric, i}

{lyric} @@ -70,27 +69,18 @@ {/if} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index e880dc4..ed66f23 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,51 +1,18 @@ -

- Select Audio File: - -

-

- Select Cover File: - -

- - - \ No newline at end of file +
+

AquaVox

+

音乐库

+
diff --git a/src/routes/play/[id]/+page.svelte b/src/routes/play/[id]/+page.svelte index 441b3a4..1b47b20 100644 --- a/src/routes/play/[id]/+page.svelte +++ b/src/routes/play/[id]/+page.svelte @@ -24,6 +24,7 @@ let prepared: string[] = []; let originalLyrics: Line[]; let lyricsText: string[] = []; + let onAdjustingProgress = false; const coverPath = writable(''); let mainInterval: ReturnType; @@ -131,16 +132,30 @@ } } + function adjustRealProgress(progress: number) { + if (audioPlayer) { + currentProgress = duration * progress; + } + } + function adjustVolume(targetVolume: number) { if (audioPlayer) { audioPlayer.volume = targetVolume; } } + function setOnSlide(value: boolean) { + onAdjustingProgress = value; + } + $: { clearInterval(mainInterval); mainInterval = setInterval(() => { - if (audioPlayer !== null && audioPlayer.currentTime !== undefined) { + if ( + audioPlayer !== null && + audioPlayer.currentTime !== undefined && + onAdjustingProgress === false + ) { currentProgress = audioPlayer.currentTime; } }, 100); @@ -156,6 +171,10 @@ readDB(); + + {name} - Aquavox + + + + + - -