Tw-fade: pure CSS scroll-driven edge masking

pete.design

100 points by petekp 4 days ago


porphyra - a day ago

What's edge masking and what am I looking at? I clicked through several of the options and I don't see any difference. There just seems to be a really basic gradient shadow.

I have gpu enabled in google chrome (verified by visiting chrome://gpu) on Chrome/149.0.7827.155 on Linux.

chrismorgan - a day ago

The fade affects scroll bars, which is quite unpleasant (and arguably catastrophic if you have two-dimensional scrolling). The traditional background-image technique avoided this by sitting inside the scroll area. I don’t think you can achieve that with mask, without an additional element. But I think it might be worth that extra element.

petekp - 4 days ago

hey all, just released a plugin to scratch an itch. i'd been lazily adding linear gradients on the edges of scrollviews and animating them with JS based on scroll position. turns out you can do a lot better with pure CSS now by leveraging masking + the new CSS scroll animations API.

works in pretty much all browers excepting firefox which doesn't have CSS scroll animations yet, but the nightly version does, so it should be generally available soon.

demo site: https://pete.design/tw-fade

github: https://github.com/petekp/tw-fade

npmjs: https://www.npmjs.com/package/tw-fade

if you use it i'd love to hear how it goes and if you have any feedback.

Hugsbox - a day ago

This is extremely laggy on my computer. It may not be a top-end gaming supercomputer but it's no slouch either.

jstanley - a day ago

FYI scrolling this page is slow as balls on my computer. Firefox on Ubuntu.

I don't know if this page is a demonstration of your plugin, I'm guessing yes but I can't see any masking going on, it seems to scroll just like a normal page but much more laggy.

EDIT: Oh I see in your comment now, it doesn't work in Firefox. My mistake.

tosti - 8 hours ago

I did this with CSS forever ago. Make an alpha gradient (from background color to transparent), save it as png, add an element to use the background-image on, and use absolute positioning to put it on top. Finish it with pointer-events: none

Why on earth would it be a big deal not to use JS for this. Even a frost effect has been demoed in CSS.

Of course nowadays you don't need the png.

franky47 - a day ago

Might want to set `overscroll-behavior: contain;` on those scroll areas, having the whole page move up and down (or worse, navigating Back when scrolling left) isn't great UX.

https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/P...

maxjustus - a day ago

I also love the pure CSS parallax effect of the "tw-fade" title shadow using multiple spans with different styles that fade in and out based on scroll position. Very clever!

Stitch4223 - a day ago

What is happening here and why is it special? The site itself does show, but does not tell (which in itself is somewhat refreshing).

ptak - a day ago

Neat! I'd much rather just copy-paste the CSS from the site though, would never install something like this as a package.

jonahx - a day ago

There is something very wrong on chrome mac, for me at least.

I mouse over the horizontal section and everything starts blinking and jittering wildly, then disappears. Vertical section has same issue.

thebiblelover7 - a day ago

How it works: https://github.com/petekp/tw-fade#how-it-works

damsta - a day ago

Really nice! Nice to see FF Nightly already has support that enables scroll detection.

Etheryte - 21 hours ago

Unfortunately it seems completely bugged out on mobile Safari.

- a day ago
[deleted]
f8ght - a day ago

[dead]

NooneAtAll3 - a day ago

arrow keys don't work, pgdown doesn't work