Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Прошу помощи специалистов, так как новичок в данном деле.Как сделать чтобы меню в зависимости от разрешения экрана выполняло свои функции?

Выше 768px:

1) Здесь интересует наведение мыши и клик. При наведении мыши или по клику на li.item открывалось его под меню.

2) При клике по li.item идет переход по ссылке, его необходимо отключить, переход по ссылке li должен быть только по подменю ul.subs li.

3) Под меню должно закрываться только при условии, если идет переход мыши или клик на следующее li.item или клик на закрытие окна на cross.

4) Если просто убрать мышь с поля меню, оно закрывается, а должно быть открыто, до тех пор, пока не выполнится условие в пункте 3.

Ниже 768px:

5) Здесь открытие меню должно быть только по клику, а закрытие по клику на крестик cross.

6) При клике по li.item идет переход по ссылке, его необходимо отключить, переход по ссылке li должен быть только по подменю ul.subs li.

PS:

1) По разрешению экрана интересует только метод matchMedia, не resize.

2) Только JavaScript.

3) Сейчас идет конфликт по закрытию меню на cross, потому как функция по click дублируется.

4) Не срабатывает сразу метод matchMedia, только после обновления экрана.

5) Не выполняется пункт 4, так как не знаю куда сувать)) e.preventDefault(), все уже перетыкал))).

6) Пункт 2 и 6 так же не выполняется, идет сразу переход по ссылке.

7) Если данный код еще можно уменьшить, это вообще супер! Так как переменную li приходится дублировать.

var dropdown = document.querySelectorAll('.menu-left>li');

var mediaQuery = window.matchMedia('(min-width: 768px)');

for(var i=0; i

function handleTabletChange(e) {

if (e.matches) {

['mouseover', 'click'].forEach(e => {

dropdown.addEventListener(e, function(e) {

var li = e.target.closest('li.item');

li.classList.add('active');

});

});

dropdown.addEventListener('mouseout', function(e) {

var li = e.target.closest('li.item');

li.classList.remove('active');

});

} else {

dropdown.addEventListener('click', function(e) {

var li = e.target.closest('li.item');

li.classList.add('active');

});

}

}

mediaQuery.addListener(handleTabletChange);

handleTabletChange(mediaQuery);

}

var cross = document.querySelectorAll('.cross');

for(var i=0; i

cross.addEventListener('click', function(e) {

var li = e.target.closest('li.item');

li.classList.remove('active');

});

}

  • Пример

  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
    • Пример
    • Пример
    • Пример
    • Пример
    • Пример
    • Пример
    • Пример
    • Пример
    • Пример
    • Пример

  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • Пример
  • 

    3 года назад
    Locosa7
    Михаил 
    43 годаРоссия
    7 лет в сервисе
    Был
    3 года назад
    • Похожие заказы
    • Нужно сделать расширение для входа на сайт. Цель: вход для сотрудников что бы не видели логины и пароли Функции: 1. импорт файла с логинами и паролями 2. скрытость логинов и паролей, в выпадающем списке входа видно только айди 3. поиск ...

      Закрыт
      3 года назад
    • Здравствуйте! Ищу разработчика Битрикс для постоянного сотрудничества - мелкие доделки, крупные разработки, полная интеграция на CMS.Сейчас есть одна тестовая задача, ищу исполнителя.Задача:В корзине сайта необходимо сделать динамический функционал, который будет выводить "Купите еще на N ...

      Закрыт
      3 года назад
    • $8

      В выдаче яндекса есть слайдер пример http://joxi.ru/LmG4lLQHl68QL2 Нужно помочь сделать такой же. Нужен человек, который уже делал такое. Понятно, что это турбо страницы и т.д. Но надо чтобы у Вас уже был готовый ...

      Закрыт
      3 года назад
    • Ищем специалиста по данной системе. Фронт, написание, доработка плагинов. Оплата почасовая, по трекеру. До $30 в час.

      Закрыт
      3 года назад
    • Нужен парсинг сайта, Live матчей футбола на странице [url=https://www.sofascore.com/football/livescore]https://www.sofascore.com/football/livescore[/url] ТЗ по ссылке: https://docs.google.com/document/d/1aPjvn-h3y6TO_TRhpY-Ewq8fGlYlm39oA5OOg0NDArk/edit?usp=sharing Срочность высокая, оплата достойная. Предпочтительно на PHP.

      Закрыт
      3 года назад
    • Проект на laravel 7.2 ( агрегатор перевозок ) От вас требуется: Отвественный подход, быть на связи, иметь возможность выделять от 5 часов в день на проект. Оплата: делим задачи на этапы и через безопасную сделку оформляем. Потребуется: внутренний ...

      Закрыт
      3 года назад
    • Требуется разработчик на долгосрочную работу. Нужно уметь создавать Telegram ботов, умение работать с базами данных, сортировкой данных в них. Проект будет высконагруженный, это тоже стоит учитывать. Все остальное расскажу в личных сообщениях.

      Закрыт
      3 года назад