1. При возникновении события scroll в window менять «фиксированному» блоку позицию (top, transform: translate() etc.).
2. Организовать прокрутку контента в блоке, занимающим весь viewport, убрав её из html (overflow: hidden). «Фиксированный» блок находится вне пределов блока с прокруткой.