Я правильно понимаю работу предоставленного скрипта? Поправьте меня в случае чего, пожалуйста.
Описывал в комментариях.
var header = document.getElementById('header'); // Получаем id элемента и записываем его в переменную header
var scrolled = false; // Как Вы писали, это флаг, он помогает снизить нагрузку на DOM страницы
window.onscroll = function(e) { // Тут мы определяем, прокручивается ли окно (Альтернатива body onscroll=('..')?) и если
// прокручивается, то запускаем анонимную функцию с параметром 'e'
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop; // Переменная получает значение прокрутки
if (scrollTop > 10) { // Если значение прокрутки больше 10
if (!scrolled) { // И если страница не прокручивается (?)
header.className += ' compact'; // То к названию класса элемента с id header прикручиваем compact
scrolled = true; // Тут непонятно (*)
}
} else { // Если мы вернулись в начало страницы
if (scrolled) { // Если страница прокручивается (почему тут прокручивается, а там не прокручивается?)
header.className = header.className.replace('compact', ''); // Удаляем compact из названия класса
scrolled = false; // И тут непонятно (*2)
}
}
}; // И, как я понимаю, все анимация происходит при помощи css?