В вашем примере есть некоторые проблемы, если я прокручиваю веб-страницу вниз или вверх, иногда две навигационные панели перекрываются, а содержимое отображается дважды и перекрывается.
Насколько я знаю, такой техники для получения не существуеттот же эффект, используя только CSS, требуется JS.
Вы можете позиционировать элементы, используя CSS только статическим способом (нормальный поток страниц), фиксированным способом (относительно окна браузера) или абсолютным / относительным (относительноближайший родитель с положением, установленным на относительное).
Вы не можете «прослушивать» событие прокрутки, как это было бы с JavaScript, поэтому вы не можете ни позиционировать элемент относительно количества прокрутки, ни изменять его позициюзначение в реальном времени, потому что даже для этого вам потребуется JavaScript.
CSS - это язык разметки презентаций, свойства, которые вы назначаете элементам с помощью правил CSS, не могут быть изменены в зависимости от события.
Вы можете сделать что-то, как вы, но это означает больше языка разметки, больше CSS и больше сложностей в обслуживаниисвязей.
Вам следует использовать JS для оптимизации работы пользователя. Если у пользователя отключен JS, он / она увидит нормальное поведение страницы, в противном случае элемент nav останется неподвижным, как и все другие веб-сайты.