Отслеживайте позицию скроллинга. Вот здесь прям "буллетпруф"
https://learn.javascript.ru/onscroll
Еще иногда я чекаю оставшееся расстояние элемента до "верхней части монитора".
И если расстояние меньше или равно половине общего "вьюпорта", например, то это значит, что элемент в центре экрана ( по горизонтали ), в этот момент можно вешать эффект.
Например transition: opacity .2s ease-in
как то так...