JSом просто подписываешься на скролл, когда будет нужное value, например проскроллил на 200 пикселей - то вешаешь какой-то класс на header (например .header-pinned), а в этом классе добавляешь нужные свойства - педдинги или высоту и указываешь для хедера свойство transition в CSS (например transition: all 0.3s ease).
И всё, твой хедер будет анимироваться нативным CSS.