с помощью js отслеживаешь скролл страницы. на определенном количестве пикселей (100 например) присваиваешь какой-то класс шапке. этому классу прописываешь нужные стили, включая position: fixed. при скролле на меньшее количество пикселей класс убираешь
Если scrollTop больше нужного расстояния, то добавляем класс к шапке, в котором корректируем стили и делаем ее fixed, если меньше - убираем этот класс.