Как реализовать плавный якорь на чистом(Нативном) JavaScript?
Этот функционал находится в стадии черновика и в некоторых браузерах уже есть из коробки. Вероятно вам нужен smooth scroll polyfill. Разумеется  никто не мешает в образовательных целях посмотреть его исходники.
варианты на JQ знаю
Так взять скролл на jq и переписать его на нативный js.