Значки мобильного меню не скрываются после изменения размера на рабочий стол

#javascript #html #jquery #css

#javascript #HTML #jquery #css

Вопрос:

Итак, вот мой сайт:https://www.vargdesign.net /

При изменении размера окна < 1024 пикселей мобильный css будет отображать значки мобильного меню. При открытии меню и изменении размера окна обратно на рабочий стол (> 1024 пикселей) значки меню больше не скрываются. Я пробовал несколько разных способов написания скрипта в jQuery для него, но я не нашел решения за 3 часа.

Веб-сайт основан на WordPress, и я сам создал тему.

Фрагмент PHP:

 <header>
  <div class="head">
    <?php the_custom_logo(); ?>
    <div class="menu-toggle">
      <i id="menu-open" class="fas fa-bars"></i>
      <i id="menu-close" class="fas fa-times"></i>
    </div>
    <nav>
      <?php wp_nav_menu(array('theme_location'=>'main')); ?>
    </nav>
  </div>
</header>
  

Скрипт:

 // add mobile menu toggle
function menu_toggle() {
  var navToggle = 1;
  // open menu on click
  function menu_open() {
    $('#menu-open').hide();
    $('#menu-close').show();
    $('nav').addClass('pull-down');
    var navToggle = 2;
    // lock scroll position, but retain settings for later
    var scrollPosition = [
      self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
      self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
    ];
    var html = jQuery('html');
    html.data('scroll-position', scrollPosition);
    html.data('previous-overflow', html.css('overflow'));
    html.css('overflow', 'hidden');
    window.scrollTo(scrollPosition[0], scrollPosition[1]);
  }
  if (navToggle = 1) {
    $('#menu-open').click(menu_open);
  }
  // close menu on click
  function menu_close() {
    $('#menu-close').hide();
    $('#menu-open').show();
    $('nav').removeClass('pull-down');
    var navToggle = 1;
    // unlock scroll position
    var html = jQuery('html');
    var scrollPosition = html.data('scroll-position');
    html.css('overflow', html.data('previous-overflow'));
    window.scrollTo(scrollPosition[0], scrollPosition[1]);
  }
  if (navToggle = 2) {
    $('#menu-close, .content').click(menu_close);
  }
}

$(document).ready(menu_toggle);
  

Ответ №1:

Я думаю, что самым простым решением было бы просто написать некоторый CSS, чтобы гарантировать, что они будут скрыты, когда ширина области просмотра больше или равна 1024px, например:

 @media only screen and (min-width: 1024px) {
   .menu-toggle   nav {
      display: none;
   }
}
  

Комментарии:

1. Не включаем часть » навигация», и это работает. Я пытался использовать его раньше, но теперь понял, что мне нужно поместить его за запросом мобильного медиа, а не перед ним. Спасибо.

2. Конечно! В этом случае значки меню остаются, но вместо этого скрывается кнопка переключения. Правильно определяя порядок медиазапросов, вы используете приоритет — также можно использовать спецификацию , например .head > .menu-toggle { display: none; } , чтобы вы могли использовать любой порядок, который вы предпочитаете. Рад, что вы нашли решение 🙂