What worries me about using onscroll, is in regard to the fading technique that is going to be firing its own set of timers to perform the fade. That seems to be a recipe for things becoming quite messy when scrolling.
Also, whenever you are scrolling, the event onscrolling event is triggering as fast as it can on the computer, which can be every 20 milliseconds. (50 times a second).
Contrasting that with checking every 500 ms (twice a second) seems to be preferable in a situation that doesn't require precise timing, but I could be wrong.
It would be interesting to have a test page of what the OP is intending to fade, so that different techniques could be explored and experimented with.