MrSteep
@MrSteep
ленивый

Мгновенный отклик на смартфонах?

Есть меню, изначально скрыто (display: none). Надо чтобы при клике на иконку меню мгновенно появлялось. На десктопах все работает нормально, но на слабеньких телефонах есть огромная задержка после клика.

Пока что есть такой код.

//
//  Класс __show просто устанавливает display: block;
//
var mainHeaderNavigation = $('.main__header__navigation'),
	touchSupport = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch,
	hamburgerIcon = document.getElementById("header-hamburger");

	function myfuncmenu(){
		mainHeaderNavigation.toggleClass('__show');
		if(mainHeaderNavigation.hasClass('__show')){
			$("body").css("overflow-y", "hidden");
		} else{
			$("body").css("overflow", "");
		}
	}

	if(touchSupport){
		hamburgerIcon.addEventListener('touchstart', function() {
			myfuncmenu();
		});
	} else{
		hamburgerIcon.addEventListener('mousedown', function() {
			myfuncmenu();
		});
	}
  • Вопрос задан
  • 231 просмотр
Пригласить эксперта
Ответы на вопрос 2
RubaXa
@RubaXa
Никогда так не делайте:
if (touchSupport) {
  // ...
} else{
   // ...
}

У юзера спокойно может быть touch-экран и мышка, я даже больше скажу, юзер может и не знать, что у него ноут с тач-экраном.

Так что просто используйте https://github.com/ftlabs/fastclick
Ответ написан
Комментировать
@weredy
Попробуй использовать библиотеку tap: https://github.com/pukhalski/tap или что-то подобное. Возможно это связано с кучей событий при тапе и стандартной задержкой на тач устройствах в 300мс.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы