TechLogoScroll Review

Component isolated for testing. Currently used on 2 pages with different tech stacks.

Homepage

Frontend & full-stack technologies

๐Ÿ“ /pages/index.vue line 85

๐ŸŽฏ Section: "Built With Industry-Leading Technologies"

๐Ÿ“Š Logos: 11 technologies

Software Development

Complete development stack with databases & deployment

๐Ÿ“ /pages/services/software-development.vue line 202

๐ŸŽฏ Section: "Trusted Technology Stack"

๐Ÿ“Š Logos: 12 technologies

Implementation Details

Component

/components/TechLogoScroll.vue

Infinite scrolling carousel using Nuxt Icon with lucide and logoipsum collections. Creates duplicate sets for seamless looping animation.

Props

logos: TechLogo[] (required)

โ””โ”€ name: string (icon name, e.g., 'logos:react')

โ””โ”€ title?: string (tooltip)

speed?: number (animation duration in seconds, default: 30)

Icon Naming Convention

logos:* collection

Framework & infrastructure logos (react, vue, docker, aws, etc.)

simple-icons:* collection

Service-specific logos (openai, github, etc.)

Live Examples

1. TechLogoScroll (Infinite Carousel)

Used on: Homepage & Software Development page

โœ“ Infinite looping animation with pause on hover

โœ“ Duplicate sets for seamless loop

โœ“ CSS custom property for dynamic speed (currently unused but available)

2. TechLogoGrid (Static Grid)

Minimal alternative - clean grid layout

โœ“ Responsive grid with auto-fit columns

โœ“ No animation overhead

โœ“ Interactive hover effects

โœ“ Pure Nuxt Icon - no wrapper complexity

3. TechLogoStagger (Animated Entry)

Engaging entrance animation with staggered fade-in

โœ“ Staggered animation on mount (each logo delays by 50ms)

โœ“ Fade-in + slide-up effect on entry

โœ“ Respects prefers-reduced-motion for accessibility

โœ“ Interactive hover scaling

How It Works

โœจ Animation Strategy

Creates two identical sets of logos. Animates translateX to move exactly 50% (one full set). When animation completes, browser restarts instantly, creating seamless infinite loop.

๐ŸŽจ Styling

Uses semantic color tokens via Nuxt Icon component rendering.

  • โ€ข Icons inherit color from CSS variable: var(--foreground, currentColor)
  • โ€ข Hover effect: opacity 0.7 โ†’ 1.0 and scale 1 โ†’ 1.05
  • โ€ข Mask gradient fades edges for smooth visual effect
  • โ€ข Pause animation on hover

๐Ÿ“ฑ Responsive

  • โ€ข Desktop (>768px): 56px height, 3rem gap
  • โ€ข Mobile (<768px): 40px height, 2rem gap
  • โ€ข Respects prefers-reduced-motion