position: sticky
with a block-level parent to avoid Safari layout issues.IntersectionObserver
) or GSAP’s ScrollTrigger to update the image based on the active scroll section.Creating a portfolio section with a sticky image container that updates with scroll can be built efficiently in Webflow using native tools plus lightweight JavaScript for cross-browser stability, especially targeting Safari's quirks.
position: sticky
using Webflow’s visual styling (under Style → Position).position: sticky
on flex or grid children. To avoid this:display: flex
or grid
.display: block
or wrap the sticky container in a block-level wrapper.data-attribute
or a custom class to reference the associated image.Use lightweight JavaScript (like IntersectionObserver
) to detect which project section is currently in view.
Update the image src, background-image, or content in the sticky container based on the active section.
Example logic (pseudo-code):
For each project section, observe when it enters the viewport.
When a section is active, swap the image in the sticky container accordingly.
Works across browsers and helps avoid Safari-exclusive layout bugs.
GSAP's ScrollTrigger plugin is highly reliable and works across all major browsers, including Safari.
It enables smoother transitions, fade-ins, and parallax scroll effects.
Use ScrollTrigger to:
Pin the image container (if sticky fails).
Animate image changes (opacity switch, scale, etc.) as the user scrolls into each section.
This can fully replace Webflow’s native scroll interaction system, which has limitations and cross-browser inconsistencies.
loading="lazy"
or preloading high-priority assets).To build a sticky scroll-triggered image container like Deveb’s, use Webflow’s position: sticky, fix layout issues for Safari by avoiding flex/grid parents, and dynamically manage content using IntersectionObserver or GSAP + ScrollTrigger for cleaner image transitions across all modern browsers.