From 95ca948743a137f65faa764a2b86877d91e03a8a Mon Sep 17 00:00:00 2001 From: Michal Vrba Date: Thu, 11 Dec 2025 15:31:45 +0100 Subject: [PATCH] Add animated floating musical notes background Enhance Home page with a floating musical notes background for a more engaging visual experience. Added markup and CSS for animated notes, including responsive adjustments. Removed obsolete inline styles from Home.razor. --- TuneRipper/Pages/Home.razor | 358 ++------------------------------ TuneRipper/Pages/Home.razor.css | 73 +++++++ 2 files changed, 86 insertions(+), 345 deletions(-) diff --git a/TuneRipper/Pages/Home.razor b/TuneRipper/Pages/Home.razor index fa2763c..e0790f5 100644 --- a/TuneRipper/Pages/Home.razor +++ b/TuneRipper/Pages/Home.razor @@ -6,6 +6,19 @@ TuneRipper - YouTube to MP3 Downloader + +
+
♪
+
♫
+
♪
+
♬
+
♫
+
♪
+
♬
+
♫
+
♪
+
+
@@ -169,351 +182,6 @@
- - @code { private string youtubeUrl = ""; private string outputMessage = ""; diff --git a/TuneRipper/Pages/Home.razor.css b/TuneRipper/Pages/Home.razor.css index 1f71edd..12b52bc 100644 --- a/TuneRipper/Pages/Home.razor.css +++ b/TuneRipper/Pages/Home.razor.css @@ -1,4 +1,65 @@ +/* Page Background and Floating Notes */ +.page-background { + position: relative; + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + background: linear-gradient(135deg, #1e3c72 0%, #2a5298 50%, #1e88e5 100%); + padding: 40px 20px; +} + +/* Floating Musical Notes */ +.music-notes { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 1; +} + +.note { + position: absolute; + font-size: 2rem; + color: rgba(255, 255, 255, 0.4); + animation: float-note 6s linear infinite; + text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3); +} + +.note:nth-child(1) { left: 10%; animation-delay: 0s; animation-duration: 8s; } +.note:nth-child(2) { left: 20%; animation-delay: 1s; animation-duration: 7s; } +.note:nth-child(3) { left: 30%; animation-delay: 2s; animation-duration: 9s; } +.note:nth-child(4) { left: 40%; animation-delay: 0.5s; animation-duration: 6s; } +.note:nth-child(5) { left: 50%; animation-delay: 3s; animation-duration: 8s; } +.note:nth-child(6) { left: 60%; animation-delay: 1.5s; animation-duration: 7s; } +.note:nth-child(7) { left: 70%; animation-delay: 2.5s; animation-duration: 9s; } +.note:nth-child(8) { left: 80%; animation-delay: 4s; animation-duration: 6s; } +.note:nth-child(9) { left: 90%; animation-delay: 0.8s; animation-duration: 8s; } + +@keyframes float-note { + 0% { + transform: translateY(100vh) rotate(0deg); + opacity: 0; + } + 10% { + opacity: 1; + } + 90% { + opacity: 1; + } + 100% { + transform: translateY(-100px) rotate(360deg); + opacity: 0; + } +} + +/* Main Content Container */ .hero-section { + position: relative; + z-index: 10; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); border-radius: 20px; @@ -148,6 +209,7 @@ font-size: 0.9rem; } +/* Responsive Design */ @media (min-width: 640px) { .input-container { flex-direction: row; @@ -180,4 +242,15 @@ .feature { min-width: 100px; } +} + +/* Responsive adjustments for notes */ +@media (max-width: 480px) { + .note { + font-size: 1.5rem; + } + + .page-background { + padding: 20px 10px; + } } \ No newline at end of file