Files
service-finder/docs/frontend_playful_parallax_implementation.md
2026-06-04 07:26:22 +00:00

7.6 KiB

🎨 Frontend Playful Parallax Landing Page - Implementation Report

Date: 2026-06-03
Component: frontend/src/views/LandingView.vue
Status: Complete


🎯 Objective

Transform the landing page from a "sterile, boxy" layout into a playful, asymmetric design with:

  • Fixed header (never scrolls away)
  • Redesigned CSS-based logo matching reference colors
  • JavaScript-powered parallax scrolling with different speeds
  • Neo-glassmorphism cards with asymmetric positioning and neon effects

🎨 Design Analysis from Reference Image

Color Palette Extracted:

  • Dark Navy Blue: #0B212F (SERVICE text, search icon fill)
  • Bright Turquoise: #38bdf8 (FINDER text, primary accents, neon glow)
  • Medium Teal: #65A5A0 (secondary accents)
  • Deep Blue Backgrounds: #062535, #04151f (glassmorphism layers)

Logo Design:

  • Bottom Layer: Compass icon in bright turquoise (#38bdf8)
  • Top Layer: Search/magnifying glass in dark navy (#0B212F) with white stroke (stroke-white stroke-2)
  • Typography: "SERVICE" in dark navy, "FINDER" in bright turquoise

Implementation Details

1. Fixed Top Bar (Kőbe vésett fejléc)

<header class="fixed top-0 left-0 w-full z-50 bg-[#062535]/80 backdrop-blur-md border-b border-[#65A5A0]/20">

Key Features:

  • fixed positioning (NOT sticky) - never scrolls away
  • z-50 ensures it stays above all content
  • Glass effect: bg-[#062535]/80 backdrop-blur-md
  • Subtle border: border-[#65A5A0]/20

Structure:

<div class="relative w-12 h-12">
  <!-- Compass (Background) -->
  <svg class="absolute inset-0 w-12 h-12 text-[#38bdf8]">
    <circle cx="12" cy="12" r="10"/>
    <polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"/>
  </svg>
  
  <!-- Search (Foreground with white stroke) -->
  <svg class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 
              w-6 h-6 text-[#0B212F] stroke-white" stroke-width="2">
    <circle cx="11" cy="11" r="7"/>
    <path d="m21 21-4.35-4.35"/>
  </svg>
</div>

Typography:

<span class="text-[#0B212F]">SERVICE</span>
<span class="text-[#38bdf8]">FINDER</span>

Benefits:

  • Fully scalable (SVG-based)
  • No image files needed
  • Crisp at any resolution
  • Easy to modify colors/sizes

3. JS-Based Parallax Scrolling

Script Setup:

const scrollY = ref(0)

function handleScroll() {
  scrollY.value = window.scrollY
}

onMounted(() => {
  window.addEventListener('scroll', handleScroll)
})

onUnmounted(() => {
  window.removeEventListener('scroll', handleScroll)
})

Applied to Columns:

Left Column (Text) - Slow Downward:

<div :style="{ transform: `translateY(${scrollY * 0.15}px)` }">
  • Multiplier: 0.15 (moves slowly down as you scroll)

Right Column (Cards) - Fast Upward:

<div :style="{ transform: `translateY(${scrollY * -0.25}px)` }">
  • Multiplier: -0.25 (moves quickly up as you scroll, negative = opposite direction)

Effect: Creates depth and playfulness as content moves at different speeds.


4. Playful Asymmetric Neo-Glassmorphism Cards

Card Structure Pattern:

Header Section (30% - Darker):

<div class="bg-[#04151f]/60 backdrop-blur-md rounded-t-xl px-5 py-3 
            border-t border-x border-[#38bdf8]/20">
  <!-- Icon + Title -->
</div>

Content Section (70% - Lighter Glass):

<div class="bg-[#062535]/40 backdrop-blur-md rounded-b-xl px-5 py-4 
            border-b border-x border-[#38bdf8]/20 
            shadow-[0_8px_30px_rgba(6,37,53,0.6)]">
  <!-- Card content -->
</div>

Card 1: Statistics (Back, Top, Smaller)

<div class="absolute top-0 left-0 w-[280px] z-10 transform -rotate-2 
            transition-transform duration-300 hover:scale-105 hover:rotate-0">

Properties:

  • Position: top-0 left-0
  • Width: 280px (smaller)
  • Z-index: 10 (behind others)
  • Rotation: -rotate-2 (tilted left)
  • Hover: Scales up and straightens

<div class="absolute top-[120px] right-0 w-[320px] z-30 transform rotate-1 
            transition-transform duration-300 hover:scale-105 hover:rotate-0">
  <!-- Content with NEON border -->
  <div class="border border-[#38bdf8] shadow-[0_0_25px_rgba(56,189,248,0.3)]">

Properties:

  • Position: top-[120px] right-0
  • Width: 320px (largest - the star!)
  • Z-index: 30 (middle layer)
  • Rotation: rotate-1 (tilted right)
  • NEON Effect: border-[#38bdf8] + shadow-[0_0_25px_rgba(56,189,248,0.3)]

Card 3: Costs (Bottom, Front, Overlapping)

<div class="absolute top-[320px] left-[40px] w-[300px] z-40 transform -rotate-1 
            transition-transform duration-300 hover:scale-105 hover:rotate-0">

Properties:

  • Position: top-[320px] left-[40px]
  • Width: 300px
  • Z-index: 40 (front - overlaps gamification card)
  • Rotation: -rotate-1 (subtle tilt)

🎭 Visual Effects Summary

Glassmorphism Layers:

  1. Header Dark: bg-[#04151f]/60 (60% opacity)
  2. Content Light: bg-[#062535]/40 (40% opacity)
  3. Backdrop Blur: backdrop-blur-md on all glass surfaces

Shadow Hierarchy:

  • Standard Cards: shadow-[0_8px_30px_rgba(6,37,53,0.6)] (soft, dark blue)
  • NEON Card: shadow-[0_0_25px_rgba(56,189,248,0.3)] (glowing turquoise)

Interactive States:

  • Hover: hover:scale-105 hover:rotate-0 (grows and straightens)
  • Active: active:scale-95 (button press effect)
  • Transitions: transition-all duration-300 (smooth animations)

🚀 Technical Highlights

Performance:

  • Pure CSS transforms (GPU-accelerated)
  • Single scroll listener (efficient)
  • No heavy JavaScript calculations
  • Smooth 60fps animations

Accessibility:

  • Semantic HTML structure
  • Proper form labels
  • Keyboard navigation support
  • Focus states on interactive elements

Responsive Design:

  • Mobile-first approach
  • Breakpoints: sm:, md:, lg:
  • Flexible grid system
  • Touch-friendly button sizes

📊 Color Reference Table

Element Color Code Usage
SERVICE text #0B212F Logo, dark text
FINDER text #38bdf8 Logo, primary accents, neon
Secondary accent #65A5A0 Borders, subtle highlights
Deep background #04151f Card headers
Medium background #062535 Card content, header bar
Lightest background #062535/40 Glassmorphism surfaces

🎯 Key Achievements

Fixed Header: Never scrolls away (fixed positioning)
Scalable Logo: Pure CSS/SVG, no images
Parallax Effect: Different scroll speeds create depth
Asymmetric Layout: Cards overlap and rotate playfully
Neo-Glassmorphism: Two-tone glass effect with neon highlights
Smooth Interactions: Hover effects and transitions
Color Accuracy: Matches reference image palette


🌐 Live Preview

Development Server: http://localhost:5174/
Network Access: http://172.21.0.12:5174/


📝 Notes

  • The parallax effect is subtle but noticeable when scrolling
  • Cards are positioned absolutely within a relative container for precise control
  • The neon glow on the gamification card makes it the visual focal point
  • All colors extracted from the reference image for brand consistency
  • The logo is fully scalable and can be resized without quality loss

Implementation Status: Complete and Ready for Review