💄 Decorated rewind
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="px-5">
|
<div class="px-5 rewind-bg">
|
||||||
<!-- Loading State -->
|
<!-- Loading State -->
|
||||||
<div
|
<div
|
||||||
v-if="pending"
|
v-if="pending"
|
||||||
@@ -280,9 +280,6 @@
|
|||||||
<div class="floating-emoji absolute bottom-1/3 -right-4 text-5xl z-10"
|
<div class="floating-emoji absolute bottom-1/3 -right-4 text-5xl z-10"
|
||||||
style="animation: drift 8s ease-in-out infinite;">💡
|
style="animation: drift 8s ease-in-out infinite;">💡
|
||||||
</div>
|
</div>
|
||||||
<div class="floating-emoji absolute top-2/3 right-1/4 text-4xl z-10"
|
|
||||||
style="animation: float 9s ease-in-out infinite 1s;">📝
|
|
||||||
</div>
|
|
||||||
<n-card
|
<n-card
|
||||||
class="w-full max-w-4xl bg-white/80 dark:bg-slate-800/80 backdrop-blur-sm shadow-lg border-l-4 border-green-600"
|
class="w-full max-w-4xl bg-white/80 dark:bg-slate-800/80 backdrop-blur-sm shadow-lg border-l-4 border-green-600"
|
||||||
>
|
>
|
||||||
@@ -390,7 +387,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="transition-words text-center text-lg opacity-70 py-16">
|
<div class="transition-words text-center text-lg opacity-70 py-16">
|
||||||
<div class="text-3xl mb-3">🎨</div>
|
<div class="text-3xl mb-3">🤔</div>
|
||||||
<p>每一个创作都是你心灵的印记,而这些印记汇聚成了什么?</p>
|
<p>每一个创作都是你心灵的印记,而这些印记汇聚成了什么?</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -401,7 +398,7 @@
|
|||||||
>
|
>
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<div class="floating-emoji absolute -top-8 left-1/3 text-5xl z-10"
|
<div class="floating-emoji absolute -top-8 left-1/3 text-5xl z-10"
|
||||||
style="animation: float 5s ease-in-out infinite;">☁️
|
style="animation: float 5s ease-in-out infinite;">✍️
|
||||||
</div>
|
</div>
|
||||||
<div class="floating-emoji absolute top-1/4 -right-6 text-4xl z-10"
|
<div class="floating-emoji absolute top-1/4 -right-6 text-4xl z-10"
|
||||||
style="animation: float-delayed 7s ease-in-out infinite 0.5s;">💬
|
style="animation: float-delayed 7s ease-in-out infinite 0.5s;">💬
|
||||||
@@ -409,9 +406,6 @@
|
|||||||
<div class="floating-emoji absolute bottom-1/4 -left-4 text-5xl z-10"
|
<div class="floating-emoji absolute bottom-1/4 -left-4 text-5xl z-10"
|
||||||
style="animation: drift 9s ease-in-out infinite;">💭
|
style="animation: drift 9s ease-in-out infinite;">💭
|
||||||
</div>
|
</div>
|
||||||
<div class="floating-emoji absolute top-2/3 right-1/3 text-4xl z-10"
|
|
||||||
style="animation: float 8s ease-in-out infinite 1.2s;">✨
|
|
||||||
</div>
|
|
||||||
<n-card
|
<n-card
|
||||||
class="w-full max-w-4xl bg-white/80 dark:bg-slate-800/80 backdrop-blur-sm shadow-lg border-l-4 border-blue-600"
|
class="w-full max-w-4xl bg-white/80 dark:bg-slate-800/80 backdrop-blur-sm shadow-lg border-l-4 border-blue-600"
|
||||||
>
|
>
|
||||||
@@ -474,15 +468,12 @@
|
|||||||
<div class="floating-emoji absolute -top-6 -right-4 text-5xl z-10"
|
<div class="floating-emoji absolute -top-6 -right-4 text-5xl z-10"
|
||||||
style="animation: float 6s ease-in-out infinite;">🌍
|
style="animation: float 6s ease-in-out infinite;">🌍
|
||||||
</div>
|
</div>
|
||||||
<div class="floating-emoji absolute top-1/3 -left-6 text-4xl z-10"
|
<div class="floating-emoji absolute -top-4 -left-6 text-4xl z-10"
|
||||||
style="animation: float-delayed 8s ease-in-out infinite 0.4s;">🔍
|
style="animation: float-delayed 8s ease-in-out infinite 0.4s;">🔍
|
||||||
</div>
|
</div>
|
||||||
<div class="floating-emoji absolute bottom-1/4 right-1/4 text-5xl z-10"
|
<div class="floating-emoji absolute -bottom-4 right-4 text-5xl z-10"
|
||||||
style="animation: drift 10s ease-in-out infinite;">🎯
|
style="animation: drift 10s ease-in-out infinite;">🎯
|
||||||
</div>
|
</div>
|
||||||
<div class="floating-emoji absolute top-2/3 -right-8 text-4xl z-10"
|
|
||||||
style="animation: float 7s ease-in-out infinite 1.5s;">📊
|
|
||||||
</div>
|
|
||||||
<n-card
|
<n-card
|
||||||
class="w-full max-w-4xl bg-white/80 dark:bg-slate-800/80 backdrop-blur-sm shadow-lg border-l-4 border-indigo-600"
|
class="w-full max-w-4xl bg-white/80 dark:bg-slate-800/80 backdrop-blur-sm shadow-lg border-l-4 border-indigo-600"
|
||||||
>
|
>
|
||||||
@@ -568,9 +559,6 @@
|
|||||||
<div class="floating-emoji absolute bottom-1/3 -left-6 text-5xl z-10"
|
<div class="floating-emoji absolute bottom-1/3 -left-6 text-5xl z-10"
|
||||||
style="animation: drift 8s ease-in-out infinite;">📞
|
style="animation: drift 8s ease-in-out infinite;">📞
|
||||||
</div>
|
</div>
|
||||||
<div class="floating-emoji absolute top-2/3 right-1/3 text-4xl z-10"
|
|
||||||
style="animation: float 7s ease-in-out infinite 1.8s;">🎭
|
|
||||||
</div>
|
|
||||||
<n-card
|
<n-card
|
||||||
class="w-full max-w-4xl bg-white/80 dark:bg-slate-800/80 backdrop-blur-sm shadow-lg border-l-4 border-teal-600"
|
class="w-full max-w-4xl bg-white/80 dark:bg-slate-800/80 backdrop-blur-sm shadow-lg border-l-4 border-teal-600"
|
||||||
>
|
>
|
||||||
@@ -1084,9 +1072,12 @@ onMounted(async () => {
|
|||||||
// Animate transition words
|
// Animate transition words
|
||||||
const transitionWords = gsap.utils.toArray<HTMLElement>(".transition-words")
|
const transitionWords = gsap.utils.toArray<HTMLElement>(".transition-words")
|
||||||
transitionWords.forEach((transition) => {
|
transitionWords.forEach((transition) => {
|
||||||
gsap.from(transition, {
|
gsap.fromTo(transition, {
|
||||||
opacity: 0,
|
opacity: 0,
|
||||||
y: 30,
|
y: 30
|
||||||
|
}, {
|
||||||
|
opacity: 0.7,
|
||||||
|
y: 0,
|
||||||
duration: 0.6,
|
duration: 0.6,
|
||||||
ease: "power2.out",
|
ease: "power2.out",
|
||||||
scrollTrigger: {
|
scrollTrigger: {
|
||||||
@@ -1537,6 +1528,13 @@ definePageMeta({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
.rewind-bg {
|
||||||
|
background-image: radial-gradient(circle at top left, rgba(147, 197, 253, 0.1), transparent 30%),
|
||||||
|
radial-gradient(circle at bottom right, rgba(244, 114, 182, 0.1), transparent 30%);
|
||||||
|
background-attachment: fixed;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
.floating-emoji {
|
.floating-emoji {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
@@ -1580,18 +1578,7 @@ definePageMeta({
|
|||||||
}
|
}
|
||||||
|
|
||||||
.transition-words {
|
.transition-words {
|
||||||
animation: fadeInUp 0.8s ease-out;
|
transform: translateY(20px);
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes fadeInUp {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(20px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 0.7;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes pulse-slow {
|
@keyframes pulse-slow {
|
||||||
@@ -1607,11 +1594,3 @@ definePageMeta({
|
|||||||
animation: pulse-slow 3s ease-in-out infinite;
|
animation: pulse-slow 3s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
background-image: radial-gradient(circle at top left, rgba(147, 197, 253, 0.1), transparent 30%),
|
|
||||||
radial-gradient(circle at bottom right, rgba(244, 114, 182, 0.1), transparent 30%);
|
|
||||||
background-attachment: fixed;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|||||||
@@ -123,6 +123,7 @@ export interface SnRewind {
|
|||||||
id: string
|
id: string
|
||||||
year: number
|
year: number
|
||||||
schemaVersion: number
|
schemaVersion: number
|
||||||
|
sharableCode: string | null
|
||||||
data: {
|
data: {
|
||||||
pass: SnRewindActiveData
|
pass: SnRewindActiveData
|
||||||
sphere: SnRewindSocialData
|
sphere: SnRewindSocialData
|
||||||
|
|||||||
Reference in New Issue
Block a user