Top
Best
New

Posted by dandep 7 hours ago

CSS-Native Parallax Effect(dan-webnotes.com)
103 points | 46 comments
baliex 6 hours ago|
That sounds interesting but it would be a whole lot more interesting if the page was itself an example of said effect!
sourcecodeplz 26 minutes ago||
I've put together an example here but it doesn't seem to work in Firefox 151.0.2 (64-bit): https://favs.eu.org/parallax/

Edit: if the body has class="no-sda", it uses a js fallback.

jonahx 2 hours ago|||
Or even linked to one!
dsmurrell 5 hours ago|||
I was also looking for examples.
yashD18 4 hours ago||
i was waiting for the effect to show up
mpeg 6 hours ago||
How does this compare to the classic css-native parallax effect? Before the scroll timeline APIs you'd use the "perspective" css property to create a container where the z plane is n pixels away from the screen, and then position each layer within it at a different z distance using transform: translateZ

That method is GPU accelerated too, so it is performant compared to some js solutions, and has worked well in every browser for around a decade

I like the idea of the scroll-timeline though, just keen to understand what the advantage is for this

dandep 4 hours ago||
OP here, thanks for asking. While the `perspective` technique works too, it has the downside of needing a careful combination of scroller elements and properties.

This approach adds a single class to the image container and that's it. Plus you can control many aspects of the animation such as entry/exit ranges, and make it control other properties like opacity or color, for example.

I know browser support is still lacking, but it will get there eventually. I'm not using this in production code yet, but I think it's useful to experiment with these new CSS APIs.

semolino 1 hour ago|||
This method should still support GPU acceleration, as `transform` (or rotate/scale/etc.) is the only property being animated. The benefit of animation-timeline seems to be that it's much easier to set up than a CSS perspective context.
som 5 hours ago|||
No doubt quite a few folk with the same question. Keen to understand performance tradeoffs.

Obvious comparison note would be that the "new" method currently enjoys somewhat limited browser support (no Firefox without a flag, and only since Safari 26)

iainmerrick 6 hours ago||
I was wondering the same thing. That translateZ is a bit fiddly to get right, so I could believe this is a bit easier to use, maybe? And presumably this could be used for other properties besides position, like colors, opacity or blurs.
phelm 6 hours ago||
A demo https://codepen.io/editor/phelm/pen/019e87f5-dfec-7372-9849-...
frereubu 6 hours ago||
There's me scrolling up and down and thinking "hey, it's not working!" But it's behind a flag on Firefox: https://caniuse.com/?search=view-timeline-name
frereubu 4 hours ago|||
For people saying it's not working in any browser - do you have some kind of reduced motion preference setting turned on? I can imagine that would have an effect on something like this and it's definitely working in Chrome for me.
cj 3 hours ago||
Yes... there's a media query in the codepen disabling animation for people with reduced motion enabled.
werdnapk 5 hours ago||||
It's been behind a flag for ages. Maybe because of performance issues?
goodmythical 1 hour ago||
Enabling (layout.css.scroll-driven-animations.enabled) and refreshing the codepen gives a "we crashed this to prevent a crash from an infinite loop" clicking to allow the infinite loops allowed me to see the animation.

Fedora 44 Kernel: x86_64 Linux 7.0.10-201.fc44.x86_64 Firefox 151.0.2

anssip 6 hours ago||||
Noticed the same thing. In Mac Safari it works without setting any flags.
wnevets 5 hours ago||||
Doesnt work on any browser for me
WithinReason 5 hours ago|||
tried 4 browsers, didn't work in any of them
alpinisme 5 hours ago||
FWIW it works on iPhone safari
deckar01 1 hour ago|||
But it jumps around and flickers pretty bad. Chrome’s own demos in the docs don’t work at all.

https://developer.chrome.com/docs/css-ui/scroll-driven-anima...

Edit: Their reference works and has some really nice demos. Must be an iframe problem. https://scroll-driven-animations.style/#demos

layer8 4 hours ago||||
Only on iOS 26.
abejfehr 4 hours ago|||
I don’t think it did for me. Are you on iOS 26?
Mashimo 5 hours ago|||
Only worked for me on mobile (vivaldi android) not on vivaldi / chrome / edge on Desktop.
account42 6 hours ago||
What an age where we need a pile of javascript as well as a bot check to demo a simple CSS trick.
zamadatix 5 hours ago||
The JS and bot check are for making additional functionality, beyond just showing the example, work easily. I.e. editing and sharing edits from a browser. If all you want is a static example, feel free to make it without these things.
sheept 1 hour ago||
A parallax effect has also long been possible with CSS 3D transforms. Here's a demo,[0][1] from the same person who made that CSS 3D FPS a while ago.[2]

[0]: https://www.keithclark.co.uk/articles/pure-css-parallax-webs...

[1]: blog: https://www.keithclark.co.uk/articles/pure-css-parallax-webs...

[2]: https://www.keithclark.co.uk/labs/css-fps/

thomasikzelf 5 hours ago||
You can make some really cool stuff with css scroll animations. I used SVG paths with a scroll animated dash offset to draw an image while scrolling. Zero javascript, it feels so smooth. https://thomaswelter.nl (the background)
apsurd 40 minutes ago||
oh that's cool!

Can only see it on chrome though =/. I switched to Safari as the lesser of two data-harvesting evils. Or rather, with an iPhone I've already chosen my overlord. I also switched to Kagi. Trying to deGoogle myself.

rsyring 5 hours ago||
Android Firefox: there is no background image.
thomasikzelf 4 hours ago||
firefox android does not support CSS animation-timeline, and firefox desktop needs layout.css.scroll-driven-animations.enabled. This probably should not be used for any critical features.
Semaphor 3 hours ago||
This [0] seems to be the main meta bug, with [1] being for CSS and [2] for JS, for FF to ship it without the flag. There seems to be slow work towards it, kinda funny that FF was the first browser to have it (flag-gated, according to CIU) and now is the only one without it in stable ;)

[0]: https://bugzilla.mozilla.org/show_bug.cgi?id=1676779

[1]: https://bugzilla.mozilla.org/show_bug.cgi?id=1676780

[2]: https://bugzilla.mozilla.org/show_bug.cgi?id=1676781

mrcsmcln 4 hours ago||
I played around with this API some time ago. It’s simple and high-performance, but one feature I wish existed is damping. Scroll-driven animations are tied directly to the scroll timeline, so there’s no concept of the parallax object “catching up” to the scroll progress over, say, one second. From what I remember, `animation-timing-function` feels weird when you scroll, so it’s not the right solution. GSAP offers this, but it’s JS-only.
sillyboi 5 hours ago||
It would be awesome to put an interactive example right in the article.
Onplana 1 hour ago||
I was expecting a demo on the linked page itself. Interesting to let Codex or Claude Code do it :)
geuis 1 hour ago|
Using css perspective for parallax has been around for years and is much simpler code.
More comments...