Overview
The portfolio uses CSS animations to create engaging, smooth interactions without any JavaScript. Animations are applied to:- Navigation links - Hover underline effect
- Skills icons - Fade-in on page load
- Icon hover states - Scale and brightness effects
- Focus states - Accessibility indicators
All animations use CSS keyframes and transitions, ensuring smooth 60fps performance.
Navigation Hover Animation
When hovering over navigation links, a blue underline animates in from left to right.The Effect
styles.css:96-104
The Keyframes
styles.css:106-114
- How It Works
- Visual Demo
- A
::afterpseudo-element is created on hover - It starts at
width: 0% - Animates to
width: 100%over 0.5 seconds - Creates a 3px tall blue bar
- When hover ends, the element disappears (no reverse animation)
Skills Icons Fade Animation
The technology icons in the Habilidades section fade in and slide up when the page loads.Icon Styling
styles.css:192-203
The
animation-fill-mode: both (the “both” keyword) keeps the initial opacity: 0 until animation starts and maintains the final state after completion.FadeSlide Keyframes
styles.css:213-223
- Initial state: Icons are invisible (
opacity: 0) and 20px below their final position - Duration: 0.8 seconds
- End state: Icons are fully visible (
opacity: 1) at their natural position - Effect: Icons smoothly fade in while sliding upward
Staggered Animation Delays
Each icon animates with a different delay, creating a wave effect:styles.css:225-251
- Desktop Pattern
- Mobile Pattern
The delays create a center-out wave pattern:The middle icon (Tailwind) animates last, creating symmetry.
Icon Hover Effects
When hovering over skill icons, they scale up and brighten:styles.css:205-211
scale: 1.15- Icon grows to 115% size (57.5px × 57.5px)brightness(1.5)- Colors become 50% brightercontrast(1.1)- Slightly increased contrast makes colors pop
Transition Timing
styles.css:195
ease-out timing function (fast start, slow end).
- Normal State
- Hover State
Focus States (Accessibility)
Keyboard navigation triggers focus styles with a blue outline:styles.css:88-93
- 4px solid outline in brand blue (
#003ba8) - 8px border radius for softer corners
- 3px offset creates space between text and outline
- 125ms delay prevents flashing when rapidly tabbing
This ensures the portfolio is fully accessible via keyboard (Tab key navigation).
Profile Image Effect
The profile photo has a glowing drop shadow:styles.css:141
1pxhorizontal offset1pxvertical offset30pxblur radius (creates glow effect)#0094a8light blue color
Performance Considerations
GPU-Accelerated Properties
These animations use GPU-accelerated properties for smooth performance: ✅ Animating (fast):transform(translateY, scale)opacityfilter
width,heightmargin,paddingtop,left
Animation Performance Tips
Reduce motion for accessibility
Reduce motion for accessibility
Some users prefer reduced motion. Add this media query:
Will-change property
Will-change property
For frequently animated elements, hint to the browser:But don’t overuse it - only for elements that animate often.
Customization Examples
Slower Fade Animation
Different Hover Scale
Reverse Navigation Animation
Make the underline animate out when hover ends:Add Bounce Effect
Next Steps
Responsive Design
Learn how animations adapt to mobile
CSS Architecture
Understand the overall CSS structure
Navigation
Explore the navigation HTML and CSS
Customization
Customize animation colors and timing