Проблема с Navbar при изменении размера на мобильный это автомат c открывает мой Navbar - PullRequest
1 голос
/ 19 апреля 2020

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

Я пытаюсь найти способ сохранить ее закрытой. Его можно открыть только вручную, переключив кнопку меню.

Кто-нибудь, кто может мне помочь?

body{
    margin: 0;
    padding: 0;
    font-family: sans-serif;
}
nav{
    width: 100%;
    background: #202c45;
    padding: 0 50px;
    box-sizing: border-box;
}
nav h1{
    margin: 0;
    float: left;
    padding: 15px 20px;
}
nav h1 a{
    color: #fff;
    text-decoration: none;
}
nav ul{
    margin: 0;
    padding: 0;
    float: right;

}

nav ul li{
    list-style: none;
    display: inline-block;
    padding: 20px 30px;
    transition: .5s;
}
nav ul li a{
    color: #fff;
    text-decoration: none;
}
nav ul li:hover{
    background: #f2184f;
}

.responsive-bar{
    width: 100%;
    background: #202c45;
    padding: 10px 30px;
    box-sizing: border-box;
    display: none;
}
.responsive-bar h3{
    margin: 0;
    padding: 3px 0;
    color: #fff;
    float: left;
}

.responsive-bar h3 a{
    color: #fff;
    text-decoration: none;
}

.responsive-bar h4{
    margin: 0;
    padding: 0;
    color: #fff;
    float: right;
    padding: 5px 10px;
    background: #f2184f;
    text-transform: uppercase;
    cursor: pointer;
}

/* mobile responsive */

@media (max-width: 900px)
{
    nav{
        padding: 0;
        display: none;
    }
    .responsive-bar{
        display: block;
    }
    nav h1{
       display: block;
       float: none; 
    }
    nav ul{
        float: none;
    }
    nav ul li{
        display: block;
        text-align: center;
        background: #141e33;
        padding: 15px 20px;
        border-bottom: 1px solid rgba(255, 255, 255, .1);
    }
    h1 .brand{
        display: none;
    }
}
<!DOCTYPE html>
<html>
  <head>
    <title>
    </title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive nav-bar Bar</title>
    <link rel="stylesheet" href="udemymobile.css">
</head>

<body>
  <nav>
      <h1 class="brand"><a href="#">Online Tutorials</a></h1>
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">About us</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
    <div style="clear: both"></div>
  </nav>
  <div class="responsive-bar">
    <h3 class="brand"><a href="#">Online Tutorials</a></h3>
    <h4 class="menu">Menu</h4>
    <div style="clear: both"></div>
  </div>
  <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
  <script type="text/javascript">
    $(document).ready(function(){
    $(".menu").click(function(){
      $("nav").slideToggle(500);
    })
  })

  $(window).resize(function() {
        if ($(this).width() > 900) {
               $("nav").show(); 
        }
});
  </script>
</body>

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Ответ был перед моим лицом. Я перепроверил свой код и, наконец, увидел собственное решение

  $(window).resize(function() {
    if ($(this).width() < 900) {
           $("nav").hide(); 
    }

});

0 голосов
/ 19 апреля 2020

Вы переключаете nav.show() при изменении размера, а не по щелчку, поэтому при изменении размера эта функция запускается каждый раз. Если вы уберете это

$(window).resize(function() {
        if ($(this).width() > 900) {
               $("nav").show(); 
        }

Ваш код все еще работает?

...