Create award-winning, memorable websites with advanced animations, creative interactions, and distinctive visual experiences. Use this skill when building sites that need to be exceptional—portfolio sites, agency showcases, product launches, or any project where "wow factor" matters.
This skill guides creation of truly exceptional websites—the kind that win awards, get shared, and make people stop scrolling. These aren't just good websites; they're experiences.
Award-winning sites share common traits that separate them from the millions of forgettable pages:
Every scroll, every click, every hover tells part of a story. The site guides users through a narrative, not just a collection of sections. Content reveals progressively, creating anticipation and reward.
Animations aren't decoration—they're communication. Each movement has purpose: guiding attention, providing feedback, creating continuity, or building emotional resonance. The timing, easing, and sequencing are meticulously orchestrated.
These sites engage multiple senses. Custom cursors create tactile feedback. Sound design (when appropriate) adds depth. Textures, gradients, and lighting effects create atmosphere. The experience feels despite being digital.
Smooth 60fps animations. Fast load times despite rich visuals. Graceful degradation on slower devices. The engineering is invisible but essential.
Award-winning sites know the rules well enough to break them deliberately. Unconventional layouts, unexpected interactions, rule-breaking typography—but always in service of the experience, never random.
Sites are judged on four dimensions:
To win Site of the Day, you need excellence across ALL four. A beautiful site with poor usability won't win.
The foundation of immersive web experiences. Elements animate in response to scroll position, creating a sense of discovery.
Key Patterns:
Implementation Stack:
Primary: GSAP + ScrollTrigger (industry standard)
Smooth Scrolling: Lenis or GSAP ScrollSmoother
React: Framer Motion + useScroll hook
Code Pattern (GSAP):
gsap.registerPlugin(ScrollTrigger);
// Basic reveal
gsap.from(".reveal-element", {
opacity: 0,
y: 100,
duration: 1,
ease: "power3.out",
scrollTrigger: {
trigger: ".reveal-element",
start: "top 80%",
end: "top 20%",
toggleActions: "play none none reverse"
}
});
// Scrubbed animation (tied to scroll position)
gsap.to(".parallax-bg", {
y: -200,
ease: "none",
scrollTrigger: {
trigger: ".parallax-section",
start: "top bottom",
end: "bottom top",
scrub: true
}
});
Award-winning sites treat text as a design element, not just content. Individual characters, words, and lines become animatable units.
Key Patterns:
Implementation:
GSAP SplitText (premium but powerful)
SplitType (free alternative)
Splitting.js (lightweight)
Code Pattern:
// Using SplitType + GSAP
const text = new SplitType('.hero-title', { types: 'chars, words' });
gsap.from(text.chars, {
opacity: 0,
y: 50,
rotateX: -90,
stagger: 0.02,
duration: 0.8,
ease: "back.out(1.7)"
});
Typography Choices for Impact:
The details that create delight. Every interactive element should respond to user input in satisfying ways.
Key Patterns:
Implementation:
Rive (for complex state-based animations)
Lottie (After Effects → web)
GSAP (programmatic control)
CSS transitions (simple states)
Code Pattern (Magnetic Effect):
const magneticElements = document.querySelectorAll('.magnetic');
magneticElements.forEach(el => {
el.addEventListener('mousemove', (e) => {
const rect = el.getBoundingClientRect();
const x = e.clientX - rect.left - rect.width / 2;
const y = e.clientY - rect.top - rect.height / 2;
gsap.to(el, {
x: x * 0.3,
y: y * 0.3,
duration: 0.3,
ease: "power2.out"
});
});
el.addEventListener('mouseleave', () => {
gsap.to(el, {
x: 0,
y: 0,
duration: 0.5,
ease: "elastic.out(1, 0.3)"
});
});
});
Seamless transitions between pages create a native-app feel and maintain immersion.
Key Patterns:
Implementation:
Barba.js + GSAP (multi-page sites)
Next.js + Framer Motion (React apps)
Astro + View Transitions API (modern approach)
Replace the default cursor with something that reinforces the brand and adds interactivity.
Key Patterns:
Code Pattern:
const cursor = document.querySelector('.cursor');
let mouseX = 0, mouseY = 0;
let cursorX = 0, cursorY = 0;
document.addEventListener('mousemove', (e) => {
mouseX = e.clientX;
mouseY = e.clientY;
});
// Smooth following with lerp
function animate() {
cursorX += (mouseX - cursorX) * 0.1;
cursorY += (mouseY - cursorY) * 0.1;
cursor.style.transform = `translate(${cursorX}px, ${cursorY}px)`;
requestAnimationFrame(animate);
}
animate();
// Context changes
document.querySelectorAll('a, button').forEach(el => {
el.addEventListener('mouseenter', () => cursor.classList.add('cursor--hover'));
el.addEventListener('mouseleave', () => cursor.classList.remove('cursor--hover'));
});
The secret sauce. Proper easing transforms mechanical movement into organic motion.
Essential Easing Functions:
power2.out / power3.out — Natural deceleration (most common)
power2.inOut — Smooth acceleration and deceleration
back.out(1.7) — Slight overshoot, then settle (playful)
elastic.out(1, 0.3) — Bouncy, energetic
expo.out — Dramatic fast-start, slow-end
circ.out — Quick initial movement
Timing Principles:
The Golden Rule: Fast in, slow out. Most movements should decelerate into their final position.
Mesh Gradients: Complex multi-point gradients that feel organic