Есть решение. Только его нужно написать самому, алгоритм простой - вам нужно узнать, сколько прокрутки осталось сверху и сколько снизу, относительно вьюпорта. Сверху это просто
scrollTop, а снизу -
scrollTop + размер вьюпорта.
Вот скрипт, который решает похожую задачу. В нем перебираются все параграфы, и видимым устанавливается стиль.
Вам нужно переписать так, чтоб цикл перебора останавливался, если какой-то параграф сейчас отображается на экране, и передавалась ссылка на видимый параграф в функцию, где вы будете его обрабатывать.
Вот статья про
измерения элементов, в ней расписаны все методы и свойства, с помощью которых определяются высота скролла, позиция элемента, размеры вьюпорта, и другие измерения, которые вам понадобятся в решении этой задачи.