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

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
S
Securelist
V
Vulnerabilities – Threatpost
C
Cyber Attacks, Cyber Crime and Cyber Security
Schneier on Security
Schneier on Security
Cyberwarzone
Cyberwarzone
Simon Willison's Weblog
Simon Willison's Weblog
Hacker News - Newest:
Hacker News - Newest: "LLM"
P
Palo Alto Networks Blog
T
Troy Hunt's Blog
SecWiki News
SecWiki News
Security Archives - TechRepublic
Security Archives - TechRepublic
T
The Blog of Author Tim Ferriss
Project Zero
Project Zero
Microsoft Security Blog
Microsoft Security Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
F
Full Disclosure
阮一峰的网络日志
阮一峰的网络日志
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Attack and Defense Labs
Attack and Defense Labs
Know Your Adversary
Know Your Adversary
WordPress大学
WordPress大学
PCI Perspectives
PCI Perspectives
N
News | PayPal Newsroom
The Last Watchdog
The Last Watchdog
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Privacy & Cybersecurity Law Blog
P
Proofpoint News Feed
V
Visual Studio Blog
C
CERT Recently Published Vulnerability Notes
H
Help Net Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
云风的 BLOG
云风的 BLOG
月光博客
月光博客
T
The Exploit Database - CXSecurity.com
I
InfoQ
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
腾讯CDC
小众软件
小众软件
V2EX - 技术
V2EX - 技术
罗磊的独立博客
Cloudbric
Cloudbric
Recorded Future
Recorded Future
IT之家
IT之家
Google DeepMind News
Google DeepMind News
C
CXSECURITY Database RSS Feed - CXSecurity.com

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.