Animation & Transition System
Relevant source files
The following files were used as context for generating this wiki page:
- aether-style.css
- aether-script.js
- index.html
- README.md
- assets/aether-shapes/shape-1.svg (Referenced via asset structure)
The Animation & Transition System in the EPIC-SUPREME-PORTFOLIO project is a multi-layered framework designed to create a premium, "geometric minimalist" user experience. It combines CSS3 keyframes for continuous background motion, an Intersection Observer-based entry animation system for content sections, and interactive JavaScript-driven effects like 3D tilting and dynamic progress tracking.
The system is encapsulated primarily within aether-style.css for visual definitions and aether-script.js for logic-heavy interactions and lifecycle management. It ensures that components such as hero titles, skill bars, and project cards transition smoothly into view as the user navigates the single-page architecture.
Sources: aether-style.css:1-5, aether-script.js:1-10, index.html:15-30
Core Animation Components
Lifecycle & Loading
The system manages the initial page state using a dedicated loader component. This component uses concentric geometric rings that animate via scale and rotation transforms to provide visual feedback during the initial 2000ms delay defined in the JavaScript controller.
Sources: aether-script.js:10-14, aether-style.css:42-53
Background Geometry Engine
A "Floating Shapes" layer provides ambient motion behind content. This is achieved through CSS keyframes that manipulate translation and rotation across varying durations and delays, creating a parallax-like depth effect.
| Component | Selector | Animation Type | Properties Affected |
|---|---|---|---|
| Loading Rings | .geo-ring | ringFloat | scale, rotate, opacity |
| Floating Shapes | .shape | float | translateY, rotate |
| Orbiting Rings | .geo-orbit | orbitRotate | rotate (linear) |
| Accent Orb | .geo-accent | accentFloat | translateY (ease-in-out) |
Sources: aether-style.css:66-110, aether-style.css:250-305
Content Entry System
The project utilizes a fadeUp animation pattern for standard content. This is triggered either by CSS delays (in the Hero section) or by JavaScript Intersection Observers (for Skills and Stats).
Intersection Observer Logic
The AetherPortfolio class monitors specific elements to trigger animations only when they enter the viewport, optimizing performance and ensuring visual impact.
Counter & Bar Implementation
- Skill Bars: The system reads the
data-widthattribute and updates the CSSwidthproperty, triggering a 2-second cubic-bezier transition. - Stat Counters: Iterates from 0 to the
data-countvalue over approximately 50 steps usingsetInterval.
Sources: aether-script.js:37-75, aether-style.css:434-450
Interactive Transitions
3D Tilt Effect
Project cards in the portfolio section use a perspective-based tilt effect. This is implemented by calculating the cursor position relative to the element's bounding rectangle.
// Implementation in aether-script.js:80-92
const x = (e.clientX - rect.left) / rect.width - 0.5;
const y = (e.clientY - rect.top) / rect.height - 0.5;
el.style.transform = `perspective(1000px) rotateX(${y * 10}deg) rotateY(${x * -10}deg)`;
Sources: aether-script.js:77-97, index.html:184-185
Navigation Progress Tracking
The aether-nav contains a nav-progress bar that provides real-time feedback on scroll depth.
| Feature | Logic | Source |
|---|---|---|
| Progress Calculation | (window.scrollY / totalScrollHeight) * 100 | aether-script.js:101-105 |
| Visual Application | transform: scaleX(progress) | aether-style.css:168-177 |
| Hover State | ::after pseudo-element width 100% | aether-style.css:151-166 |
Technical Implementation Summary
Key CSS Keyframes
/* Examples from aether-style.css */
@keyframes fadeUp {
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes orbitRotate {
to { transform: rotate(360deg); }
}
Sources: aether-style.css:225-230, aether-style.css:294-296
The Animation & Transition System is central to the "Aether" brand identity. By delegating heavy lifting to CSS transitions and using JavaScript primarily for scroll-aware triggers and complex math (like the tilt effect), the portfolio maintains a high-performance profile while delivering a visually sophisticated experience.
Sources: README.md:1-15, index.html:1-10