Cal_Lightman
@Cal_Lightman

Липкое навигационное меню на чистом JS, как сделать?

Как правильно будет выглядеть вариант скрипта на чистом JS?
В интернете много вариантов, но они работают не во всех браузерах и так же не работают с другими скриптами рядом....

Сейчас на JQuery код с разметкой выглядит так:

<nav id="menu" class="default">
<div class="menu_list">
 ...
</div>
</nav>


$(function(){
	var menu = $("#menu");
	$(window).scroll(function(){
		if($(this).scrollTop() > 150 && menu.hasClass("default")){
			menu.removeClass("default").addClass("fixed");
		}
		else if($(this).scrollTop() <= 150 && menu.hasClass("fixed")){
			menu.removeClass("fixed").addClass("default");
		}
	});
});
  • Вопрос задан
  • 583 просмотра
Решения вопроса 1
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
document.addEventListener("DOMContentLoaded", onDOMReady);

function onDOMReady() {
  window.addEventListener('scroll', onWindowScroll)

  var menu = document.getElementById('menu');

  function onWindowScroll() {
    if(window.document.scrollingElement.scrollTop > 150){
      menu.classList.add("fixed");
    }
    else { 
      menu.classList.remove("fixed")
    }
  }
}


События загрузки документа
Document.scrollingElement

Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sharp97
@sharp97
не фонтан но брызги есть
Если что добавляйте в css
.fixed{
position:fixed}

и всё ок будет работать
если кому помог мой коммент с вас лик)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
23 апр. 2024, в 19:05
15000 руб./за проект
23 апр. 2024, в 19:01
7000 руб./за проект
23 апр. 2024, в 18:47
10000 руб./за проект