Первое, что приходит в голову, это сделать примерно следующее:
- Определяем высоту полученного документа (страницы) и размер экрана (достаточно тоже только высоты)
- Определяем положение блока на странице, примерно так - берем его верхнюю границу, высоту блока, вычисляем нижнюю границу, добавляя ещё 50-100 пикселов (я б добавил)
- При скролле страницы проверяем, насколько пользователь проскроллил документ, больше ли значение проскролленого, чем вычисленная нами страница
- Если условие проходит => выполняем нужное действие
Логика примерно такая. Вроде как был какой-то скрипт, который определял "видимость" блока на экране, но название не помню (но ощущение, что использовался как дополнение к библиотечке animate.css).