От: JS скролиране с граници
Трябва отначало да му зададеш relative/absolute атрибут, после JS скрипт проверява дали е скролирано и колко, примерно 50 пиксела от най-горе, тогава му слага атрибут fixed и същото е като стигне на 50 пиксела от дъното, пак relative/absolute.