Отслеживать при скролле позицию элементов. Если размеры всех элементов постоянны, то можно по упрощенной схеме вести расчеты.
function getVisibleBlock() {
var heights = [200, 150, 100];
var scrollTop = window.scrollY;
var y = 0;
for (var i = 0; i < heights.length; i ++) {
if (scrollTop < (y += heights[i])){
break;
}
}
return document.getElementById(i + 1);
}