惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
The Last Watchdog
The Last Watchdog
小众软件
小众软件
S
Security @ Cisco Blogs
S
Schneier on Security
Forbes - Security
Forbes - Security
S
Secure Thoughts
W
WeLiveSecurity
Latest news
Latest news
博客园 - Franky
Last Week in AI
Last Week in AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
美团技术团队
Schneier on Security
Schneier on Security
V
V2EX
Hugging Face - Blog
Hugging Face - Blog
B
Blog
GbyAI
GbyAI
A
About on SuperTechFans
爱范儿
爱范儿
博客园 - 叶小钗
T
Tor Project blog
SecWiki News
SecWiki News
Blog — PlanetScale
Blog — PlanetScale
A
Arctic Wolf
博客园 - 聂微东
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
MongoDB | Blog
MongoDB | Blog
P
Proofpoint News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
G
GRAHAM CLULEY
Webroot Blog
Webroot Blog
Google Online Security Blog
Google Online Security Blog
博客园 - 三生石上(FineUI控件)
Hacker News: Ask HN
Hacker News: Ask HN
Hacker News - Newest:
Hacker News - Newest: "LLM"
The Register - Security
The Register - Security
C
CERT Recently Published Vulnerability Notes
K
Kaspersky official blog
U
Unit 42
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Security Affairs
V2EX - 技术
V2EX - 技术
Help Net Security
Help Net Security
阮一峰的网络日志
阮一峰的网络日志
Recent Announcements
Recent Announcements
J
Java Code Geeks

Codrops

Engineering the Web Experience Behind Shopify’s Spring ’26 Edition: Everywhere | Codrops Shaping Stories into Experience: The Work of Kevin Lam | Codrops Testing What Users Actually See with Vitest and Chromatic | Codrops Designing Beyond the Surface: How DashDigital Turns Complexity into Clarity | Codrops Creative Entrepreneurship: Designing the Machine | Codrops Exploring 3D Image Rotations on Scroll | Codrops Always Building, Always Learning: Cyd Stumpel’s Journey Through the Modern Web | Codrops Designing A Better Lou: Reducing Cognitive Load Through Design, Content, and Systems | Codrops Sketching the Impossible: A 3D Portfolio Built Without a Single 3D Model | Codrops Building Horeca: Advanced Motion Design in Webflow Without the Performance Trade-Offs | Codrops Building an Interactive Digital Stamp Collection with Shaders, Postcards, and Playful Inspection | Codrops No Two Paths Alike: Inside San Rita’s Approach to Digital Experiences | Codrops The Making of the New Lesse Studio Website: Clarity, Performance, and Intentionality | Codrops Creating a Thumbnail Flow Animation with GSAP MotionPath | Codrops Forging Her Own Path: Houmahani Kane’s Journey in Creative Development | Codrops Beaucoup and the Pursuit of Memorable Experiences | Codrops The Future of Emotional Technology: Comfort Websites for Growth and Self-Awareness | Codrops The Never Ending Story: Building a Seamless Infinite Scroll Experience with GSAP & Lenis | Codrops Whooshes, Snaps and Shaders: Adrien Vanderpotte and the Feeling of the Interface | Codrops Building a Scroll-Driven 3D Cube Gallery in Webflow with GSAP | Codrops Creating Scroll-Driven SVG Map Animations with GSAP | Codrops Made With Gsap: Building a Fun Gravity-Based Mouse Trail | Codrops 80s Business Tech and Seamless Scene Transitions: Inside Shader.se’s Scroll-Driven WebGPU Pipeline | Codrops Merlin: The Code Boutique Turning Motion Into Digital Magic | Codrops Designing Ourselves: The New Obys Identity and Website | Codrops Exploring the HTML-in-Canvas Proposal | Codrops Le:mma Studio: Building the Feeling Behind the Screen | Codrops From Shader Uniforms to Clip-Path Wipes: How GSAP Drives My Portfolio | Codrops Reverse-Engineering Claude AI’s Mascot Animations with SVG and GSAP | Codrops Akaru: Crafting Precision-Driven Digital Experiences | Codrops Designing Against the Gallery: A Two-Year Journey to a Layered Portfolio Experience | Codrops Between Human and Machine: Sofia Papadopoulou’s Approach to Augmented Creativity | Codrops More Than a Portfolio: Building a Scroll-Driven 3D World with Something to Say | Codrops Rhumb Studio: Small but Mighty, Shaped by Curiosity | Codrops Susurrus: Crafting a Cozy Watercolor World with Three.js and Shaders | Codrops Building 4WIDE: Turning Distortion, Blur, and Motion into a Coherent Experience | Codrops A Playful Clip Menu with GSAP’s easeReverse | Codrops False Earth: From WebGL Limits to a WebGPU-Driven World | Codrops Interactive Storytelling for the Web: Building Immersive Stories with Timelines, 3D, and Layered Scenes | Codrops The Art of Complex Motion: Corentin Bernadou’s World of Shaders and Experimentation | Codrops They Call Me Giulio: The Making of a Cinematic Cyberpunk Portfolio | Codrops Lusion: Where Digital Craft Meets Ambitious Experimentation | Codrops The Exat Microsite: Pushing a Typography Showcase to New Creative Extremes | Codrops A Single DM, a First SOTD, and the Start of Chanh M. Ho’s Creative Journey | Codrops Creating Custom Page Transitions in Astro with Barba.js and GSAP | Codrops R—K ’26: The Thinking and Code Behind a Portfolio Led by Presence | Codrops Building the Maxima Therapy Website: React, GSAP, and Dabbling with AI | Codrops Where Engineering Meets Craft: Edoardo Lunardi’s Obsession with the Details | Codrops Animating 160,000 Cubes in Three.js to Visualize Dithering | Codrops Arnaud Rocca’s Portfolio: From a GSAP-Powered Motion System to Fluid WebGL | Codrops Where Confidence Needs No Decoration: The Malvah.Studio Story | Codrops Motion Highlights #17 | Codrops
Podium: Building a Website Where Running Becomes Storytelling | Codrops
By Julien Sister and Benoît Delorme · 2026-06-23 · via Codrops

How we designed and built a portfolio that preserves cinematic storytelling through rhythm, motion, and restraint.

case study GSAP Three.js WebGL

Podium is a production studio creating films around running, trail, and athletic culture, but always through a narrative lens.

Their work captures what happens around performance: the silence, the effort, the environment, the human presence.

The initial idea for the site came from a simple observation: their films already carry a strong rhythm, yet most portfolio websites would break that rhythm into disconnected pieces.

We wanted to build an experience that would extend their storytelling instead of flattening it.

The project took shape over several weeks, from early concepts to final implementation. One of the key turning points was moving away from a page-based structure early on and committing to a continuous, sequence-driven experience. That decision influenced everything, from navigation to transitions to content hierarchy.

The main challenge was restraint. Not what to build, but what to remove.

Tech Stack & Tools

The site was built as a custom front-end experience, with the stack chosen mainly for timing control, media handling, and animation precision.

  • Zustand handles shared interaction state such as pointer position, scroll progress, transition phases, and scene state.
  • Next.js provides the structure, routing, metadata, and server-rendered content entry points.
  • React is used for the component system and state-driven UI transitions.
  • GSAP powers the animation layer, especially ScrollTrigger for scroll-linked scenes and Flip for page transitions.
  • Lenis is used for smooth scrolling, synchronized with the GSAP ticker so scroll and animation share the same rhythm.
  • Three.js / React Three Fiber drives the WebGL scenes, including the hero shader, the mosaic section, and the 3D footer object.
  • DatoCMS manages project and homepage content, keeping the editorial structure flexible.

Feature Breakdowns

1. Hero Grain and Mouse Texture

The homepage starts with a shape that reacts to the cursor. The intention was to highlight one of the essential parts of Podium’s visual language: grain.

The mouse movement is written into a small trail texture. That texture is then passed to the shader and used as an influence map. The cursor does not move the shape directly. It disturbs the material inside it.

One important detail is the blend mode: difference. The trail is not just painted normally into the texture. Difference blending creates contrast by comparing the existing texture values with the new input, which gives the trace a sharper, less polished feel. That is useful here because the effect needs to feel closer to image grain than to a soft glow.

const [mouseTexture, onMove] = useTrailTexture({
  size: 1024,
  maxAge: 600,
  blend: 'difference',
  radius: 0.095,
  intensity: 0.1,
  minForce: 0.5,
});

useFrame(() => {
  const { uvX, uvY, moveId } = usePointerStore.getState();

  if (moveId !== lastMoveIdRef.current) {
    lastMoveIdRef.current = moveId;
    onMove({ uv: { x: uvX, y: uvY } });
  }
});

On the shader side, the trail texture is mixed with noise and used to offset the UVs.

The result is local distortion: the image feels like it has a surface, and the cursor briefly reveals that surface.

2. Pixel Language in Micro-interactions

The same visual idea appears in smaller interactions across the site. Text does not simply fade in. It often appears character by character, with a slightly irregular order. Hover states also use small pixel-like behaviors instead of large decorative animations.

const split = SplitText.create(el, {
 type: 'words,chars',
 charsClass: 'char',
 wordsClass: 'word',
});

gsap.to(split.chars, {
 opacity: show ? 1 : 0,
 duration,
 stagger: { amount: staggerAmount, from: 'random' },
});

This gives the interface a cohesive visual texture. The pixel treatment connects the hero, the typography, the project controls, and the small hover moments without over-explaining the brand. It is present enough to be felt, but restrained enough to stay in the background.

3. Page Transitions

Project transitions were designed to avoid the feeling of leaving one page and loading another. When a user clicks a project, the selected media becomes the transition object.

The animation starts from the media’s current position in the grid. A temporary overlay is placed exactly on top of it, using the same visual asset. That overlay then expands into the project hero while the route changes underneath. 

This makes the transition feel connected to the content instead of attached to the interface.

We went through several iterations here. One version used a pixel-style background during the page transition, but it started to feel too heavy and not refined enough for the final direction. It was visually interesting, but it pulled attention away from the project media.

Old pixel transition

The final version is intentionally simple and precise: the image or video itself carries the transition, without adding a separate visual effect on top of the media.

Transition

Visual & Interaction Design

The design is built around restraint and rhythm.

We intentionally avoided heavy visual effects. Instead, we focused on:

  • Pacing through scroll
  • Subtle transitions
  • Strong typographic hierarchy
  • Generous spacing

Scroll becomes the primary interaction model, not just for navigation, but for storytelling.

There’s a deliberate slowness to the experience. Elements don’t appear instantly; they emerge. This mirrors the nature of running itself which is progressive, continuous, immersive.

Transitions are soft and directional, often vertical, reinforcing the idea of movement through space rather than jumping between states.

Reflections

This project reinforced something we believe strongly: Not every site needs to be fast in the same way. Sometimes, slowing down is what creates impact.

Working on Podium pushed us to think about digital experiences as temporal objects, not just structures, but sequences that unfold over time. It challenged us to design with restraint, to remove rather than add, and to trust the content enough to give it space.

It also highlighted the importance of alignment. When the subject, the storytelling, the design, and the development all move in the same direction, the experience becomes cohesive in a way that feels natural.

Podium now has a site that doesn’t just present its work, it extends it. A space where films can exist in the right conditions, with the right rhythm.

A reminder that sometimes, the best digital experiences are the ones that don’t try to say more, but say it better.

Julien Sister

Hi, I’m Julien, Creative Director and Co-Founder of San Rita. I focus on crafting distinctive digital experiences and bold visual identities that bring together design, technology, and storytelling. My work explores how brands and stories can move off-trail and create unexpected digital experiences.

Benoît Delorme

Creative Technologist at the intersection of design, code, and emerging technologies. I design digital experiences: immersive interfaces, WebGL environments, physical installations, and real-time interactions.

Creative Spotlights

Inside the journeys and portfolios of today's most inspiring designers and developers.

Studio Stories

Discover how studios & agencies started, how they work, and what they've built.

Case Studies

Discover the ideas, design, and craft behind today’s most inspiring web experiences.