Как сделать гамбургер меню только в мобильной версии?

668
03 июня 2017, 18:16

Имеется готовый код на jquery, реализующий гамбургер меню в магазине на Opencart. Но гамбургер функционирует при любом разрешении экрана, как можно ограничить его, скажем до 800px ширины? Код:

$( ".cross2" ).hide();
$( ".list-group" ).hide();
$( ".hamburger2" ).click(function() {
    $( ".list-group" ).slideToggle( "slow", function() {
        $( ".hamburger2" ).hide();
        $( ".cross2" ).show();
    });
});
$( ".cross2" ).click(function() {
    $( ".list-group" ).slideToggle( "slow", function() {
        $( ".cross2" ).hide();
        $( ".hamburger2" ).show();
    });
});

Попробовал добавить if($(window).width()<800) {...}, но после этого гамбургер вообще не работает

Answer 1

Я не АС в js но может быть так ?

$(document).ready(function() { 
  $(".hmenu").click(function() { 
    $("nav").toggleClass("show"); 
    $(this).toggleClass("showw"); 
  }); 
});
* { 
  margin: 0; 
  padding: 0; 
  list-style: none; 
  text-decoration: none; 
} 
 
html, 
body { 
  padding: 10px 30px; 
} 
 
nav { 
  height: 50px; 
  background: lightgrey; 
  line-height: 50px; 
} 
 
ul { 
  display: table; 
} 
 
ul li { 
  display: table-cell; 
  vertical-align: bottom; 
} 
 
ul li a { 
  display: table-cell; 
  width: 1000px; 
  height: 40px; 
  text-align: center; 
  vertical-align: middle; 
  color: #000; 
} 
 
@media screen and (min-width:480px) and (max-width:640px) { 
  * { 
    margin: 0; 
    padding: 0; 
  } 
  html, 
  body { 
    height: 100%; 
    padding: 0; 
  } 
  nav { 
    display: block; 
    width: 200px; 
    height: 100%; 
    background-color: lightgrey; 
  } 
  ul, 
  ul li, 
  ul li a { 
    display: block; 
    width: 200px; 
    color: #000; 
  } 
  ul li { 
    height: 50px; 
    line-height: 50px; 
  } 
} 
 
@media screen and (max-width:480px) { 
  * { 
    margin: 0; 
    padding: 0; 
  } 
  html, 
  body { 
    height: 100%; 
    padding: 0; 
  } 
  nav { 
    display: block; 
    width: 200px; 
    height: 100%; 
    background-color: lightgrey; 
    display: none; 
  } 
  ul, 
  ul li, 
  ul li a { 
    display: block; 
    width: 200px; 
    color: #000; 
  } 
  ul li { 
    height: 50px; 
    line-height: 50px; 
  } 
  .hmenu { 
    width: 50px; 
    height: 50px; 
  } 
  .hmenu span { 
    display: block; 
    width: 90%; 
    height: 10px; 
    background: #ccc; 
    margin: 6px auto; 
    border-radius: 6px; 
  } 
  .hmenu.showw { 
    margin-left: 200px; 
  } 
  nav.show { 
    display: block; 
    margin-top: -50px; 
  } 
}
<meta name="viewport" content="width=device-width, initial-scale=1"> 
 
<p class="hmenu"> 
  <span></span> 
  <span></span> 
  <span></span> 
</p> 
<nav> 
  <ul> 
    <li> 
      <a href="">Главная</a> 
    </li> 
    <li> 
      <a href="">Форум</a> 
    </li> 
    <li> 
      <a href="">Портфолио</a> 
    </li> 
    <li> 
      <a href="">О разработчике</a> 
    </li> 
  </ul> 
</nav> 
 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

DEMO

Answer 2

Решение может заключаться в использовании media queries. Примерно так:

@media (min-width: 801px) {
  #<id вашего меню> {
    display: none;
  }
}
READ ALSO
keyCode не работает на Android Chrome

keyCode не работает на Android Chrome

Не работает keyCode в Android ChromeМне нужно отловить событие в поле ввода(input) тапа по запятой (",") или точке ("

301
Заполнение объектов

Заполнение объектов

Добрый деньХотел спросить, как в цикле заполнить объект вида

462
Как добавить параметр к url?

Как добавить параметр к url?

Помогите добавить к текущей странице параметр

468