Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted 9 months ago

LinkSphere: Animated Social Portal

sass/scss
Zahra Ehsani•160
@ehsanidev
A solution to the Social links profile challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


What are you most proud of, and what would you do differently next time?

Regarding the Gradient Bubble Social Links Profile project:


Most Proud Of:
  1. Interactive Visual Experience:

    • Successfully merging advanced visual effects (animated gradient bubbles with glass morphism) with functional profile links
    • Creating mouse-responsive bubbles that enhance user engagement
  2. Technical Execution:

    • Implementing cutting-edge CSS/Sass features like mix-blend-mode, backdrop-filter, and math.random()
    • Developing a framerate-friendly animation system using will-change and transform
  3. Aesthetic Balance:

    • Combining vibrant gradients with a clean, minimalist profile design
    • Achieving depth with lightweight CSS shadows instead of heavy assets
  4. Responsive Performance:

    • Maintaining smooth animations across mobile and desktop devices
    • Optimized asset-free design (pure CSS/JS)

What I Would Do Differently:
  1. Performance Optimization:

    • Reduce bubble count from 30 to 15-20 for low-end devices
    • Add a performance toggle button to disable effects
  2. Browser Compatibility:

    • Implement robust @supports fallbacks for backdrop-filter
    • Test more thoroughly on Safari and older Firefox versions
  3. Enhanced Interactivity:

    • Add touch support for mobile devices
    • Create a "pop" animation when bubbles are clicked
  4. Code Structure:

    • Replace inline style modifications with class toggles in JavaScript
    • Convert some Sass variables to CSS custom properties for real-time theming
  5. Accessibility Improvements:

    • Implement prefers-reduced-motion support
    • Enhance text contrast when overlaying bubbles
    • Add ARIA labels for interactive elements

Key Takeaways:
This project successfully balanced technical innovation with user experience. Future iterations would prioritize:

  1. Progressive enhancement over cutting-edge effects
  2. Systematic testing across more devices
  3. User control options for visual preferences

Code Example of Improvements:

// Accessibility-first approach
.bubble {
  @media (prefers-reduced-motion) {
    animation: dissolve 4s ease both;
  }
  
  @supports not (backdrop-filter: blur(20px)) {
    background: rgba($primary, 0.4);
  }
}

JavaScript Enhancement:

// Mobile-friendly interaction
bubbles.forEach(bubble => {
  bubble.addEventListener('touchstart', handleTap, { passive: true });
});

This reflection demonstrates both technical achievement and user-centric growth in my development process.

What challenges did you encounter, and how did you overcome them?

Challenges Faced & Solutions Implemented
(Gradient Bubble Social Links Profile Project)


1. Performance vs. Visual Complexity

Challenge:

  • 30 animated bubbles with blur/gradients caused frame drops on mobile devices
  • backdrop-filter particularly resource-intensive

Solutions:
✔ Reduced bubble count dynamically based on device capability
✔ Debounced mouse events (50ms throttle) for smoother interaction
✔ Hardware acceleration with transform: translateZ(0)
✔ Conditional rendering: Disabled effects when tab backgrounded

// Performance optimization snippet
window.addEventListener('blur', () => {
  document.querySelectorAll('.bubble').forEach(bubble => {
    bubble.style.animationPlayState = 'paused';
  });
});

2. Cross-Browser Compatibility

Challenge:

  • Safari required -webkit- prefixes for backdrop-filter
  • Firefox had inconsistent gradient rendering

Solutions:
✔ Progressive enhancement with @supports queries
✔ Feature detection to apply fallbacks
✔ Automated prefixing using Sass mixins

// Browser compatibility mixin
@mixin glass-effect {
  @supports (backdrop-filter: blur(20px)) {
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
  }
  @supports not (backdrop-filter: blur(20px)) {
    background: rgba($color-bg, 0.7);
  }
}

3. Mobile Touch Interaction

Challenge:

  • Original mouse-based animation felt unresponsive on touch devices

Solutions:
✔ Added touch event listeners alongside mouse events
✔ Implemented inertial scrolling for natural feel
✔ Visual feedback with tap-scale animation

// Touch support implementation
element.addEventListener('touchmove', (e) => {
  e.preventDefault();
  handlePosition(e.touches[0].clientX, e.touches[0].clientY);
}, { passive: false });

4. Color Contrast & Accessibility

Challenge:

  • Gradient bubbles reduced text readability
  • Motion effects could trigger vestibular disorders

Solutions:
✔ Dynamic text shadow when overlaying bubbles
✔ prefers-reduced-motion media query
✔ Contrast checker integration in Sass build

// Accessibility adaptations
.profile-card {
  @media (prefers-reduced-motion) {
    --animation-speed: 0.5;
  }
  
  &__title {
    text-shadow: 0 1px 3px rgba(0,0,0,0.3);
    
    @when bubble-is-over {
      text-shadow: 0 2px 5px rgba(0,0,0,0.7);
    }
  }
}

5. Randomization vs. Consistency

Challenge:

  • math.random() in Sass generated static values on compile
  • Needed dynamic randomness per session

Solutions:
✔ Hybrid approach:

  • Base styling with Sass randomization
  • Dynamic adjustments via CSS custom properties + JS
// Client-side randomization
document.documentElement.style.setProperty(
  '--bubble-hue', 
  Math.floor(Math.random() * 360)
);

Key Lessons Learned:

  1. Test early on low-end devices
  2. Layer effects for graceful degradation
  3. User control beats imposed visual splendor
  4. Sass+JS synergy solves static/dynamic needs

The project evolved from a visual experiment to a case study in balancing aesthetics with robust performance.

What specific areas of your project would you like help with?

Short Answer:

For this project, I'd appreciate help with:

  1. Performance Optimization – Reducing GPU load from animated bubbles
  2. Cross-Browser Testing – Especially Safari's backdrop-filter quirks
  3. Mobile UX – Improving touch interaction responsiveness
  4. Accessibility Audit – Ensuring motion/contrast meet WCAG standards

(Example: "Would love suggestions on optimizing the bubble count algorithm for different device tiers!")


Concise Alternative:
"Seeking guidance on:
① Mobile performance tuning
② Safari compatibility fixes
③ Touch gesture refinement"

Let me know which area you'd like to focus on!

Code
Loading...

Please log in to post a comment

Log in with GitHub

Community feedback

No feedback yet. Be the first to give feedback on Zahra Ehsani's solution.

Join our Discord community

Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!

Join our Discord

Stay up to datewith new challenges, featured solutions, selected articles, and our latest news

Frontend Mentor

  • Unlock Pro
  • Contact us
  • FAQs
  • Become a partner
  • Use cases

Explore

  • Learning paths
  • Challenges
  • Solutions
  • Articles

Community

  • Discord
  • Guidelines

For companies

  • Hire developers
  • Train developers
© Frontend Mentor 2019 - 2025
  • Terms
  • Cookie Policy
  • Privacy Policy
  • License