Проблема с мобильным просмотром при открытии меню?

при открытии меню и прокрутки вниз навигационная панель по-прежнему перемещается

Хочу при открытии меню мешает прокрутка

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

$(document).ready(function(){
    $(".menu").click(function(){
        $("nav").slideToggle(800);
    })
    
        $(window).scroll(function() {
        var distanceFromTop = $(document).scrollTop();
        if (distanceFromTop >= $('.banner').height())
        {
            $('nav').addClass('fixed');
        }
        else
        {
            $('nav').removeClass('fixed');
        }
    });
    
    
});
body{
height:1000px;
}
.banner{
    height: 120px;
    background: red;
}
.fixed {
    position: fixed;
    top: 0;
    width: 100%;
}
nav{
    width: 100%;
    background: #202c45;
    padding: 0 50px;
    box-sizing: border-box;
}
nav h1{
    margin: 0;
    padding: 0;
    float: left;
    padding-top: 18px;
}

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;
    transition: 0.5s;
    }

nav ul li:hover{
    background: #f2184f;
}

nav ul li a{
    color: #fff;
    text-decoration: none;
}

.responsive-bar{
    width: 100%;
    background: #202c45;
    padding: 10px 30px;
    box-sizing: border-box;
    display: none;
}

.responsive-bar h3{
    margin: 0;
    padding: 3px 0;
    float: left;
    color:#fff;
}
.responsive-bar h3 a{
    color:#fff;
    text-decoration: none;
    }
.responsive-bar h4{
    margin: 0;
    padding: 0;
    color: #fff;
    float: right;
    cursor: pointer;
    padding: 5px 10px;
    background:#f2184f;
    text-transform: uppercase;
}
@media (min-width:768px){
    nav{
        display: block !important;
    }
}
@media (max-width:768px){
    .banner{
        display: none;
        position: fixed;
        
    }
    nav{ 
        display: none;
        padding: 0;
    }

    .responsive-bar{
        display: block;
        position: fixed;
    }
    nav h1{
        display: block;
        float: none;
    }
    nav ul{
        float: none;
    }
    nav ul li{
        display: block;
        text-align: center;
        padding: 15px 20px;
        border-bottom: 1px solid rgba(255,255,255,.1)
    }
    #full-logo{
        display: none;
    }
}
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
    <div class = "banner">centered image
    </div>
<nav>
    <h1 id = "full-logo"><a href = "#">MyCar</a></h1>
    <ul>
        <li><a href = "#">Home</a></li>
        <li><a href = "#">About</a></li>
        <li><a href = "#">Service</a></li>
        <li><a href = "#">Portfolio</a></li>
        <li><a href = "#">Contact</a></li>
    </ul>
    <div style = "clear:both;"></div>
</nav>
<div class = "responsive-bar">
        <h3 class = "brand"><a href = "#">MyCar</a></h3>
    <h4 class = "menu">Menu</h4>
    <div style = "clear:both;"></div>
</div>    

любая помощь по этому вопросу, пожалуйста

примечание: я скрываю баннер над навигационной панелью в мобильном представлении, но на большом экране не скрывается

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
33
1

Ответы 1

Добавьте «переполнение: скрыто» в тело, когда меню открыто. это решит вашу проблему.

$(document).ready(function(){
    $(".menu").click(function(){
        $("nav").slideToggle(800);
    })
    
        $(window).scroll(function() {
        var distanceFromTop = $(document).scrollTop();
        if (distanceFromTop >= $('.banner').height())
        {
            $('nav').addClass('fixed');
            $('body').css('overflow', 'hidden');
        }
        else
        {
            $('nav').removeClass('fixed');
            $('body').css('overflow', 'auto')
        }
    });
    
    
});
body{
height:1000px;
}
.banner{
    height: 120px;
    background: red;
}
.fixed {
    position: fixed;
    top: 0;
    left:0;
 /*   bottom:0;
    overflow:auto; */ /* if you want scroll inside menu */
    width: 100%;
}
nav{
    width: 100%;
    background: #202c45;
    padding: 0 50px;
    box-sizing: border-box;
}
nav h1{
    margin: 0;
    padding: 0;
    float: left;
    padding-top: 18px;
}

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;
    transition: 0.5s;
    }

nav ul li:hover{
    background: #f2184f;
}

nav ul li a{
    color: #fff;
    text-decoration: none;
}

.responsive-bar{
    width: 100%;
    background: #202c45;
    padding: 10px 30px;
    box-sizing: border-box;
    display: none;
}

.responsive-bar h3{
    margin: 0;
    padding: 3px 0;
    float: left;
    color:#fff;
}
.responsive-bar h3 a{
    color:#fff;
    text-decoration: none;
    }
.responsive-bar h4{
    margin: 0;
    padding: 0;
    color: #fff;
    float: right;
    cursor: pointer;
    padding: 5px 10px;
    background:#f2184f;
    text-transform: uppercase;
}
@media (min-width:768px){
    nav{
        display: block !important;
    }
}
@media (max-width:768px){
    .banner{
        display: none;
        position: fixed;
        
    }
    nav{ 
        display: none;
        padding: 0;
    }

    .responsive-bar{
        display: block;
        position: fixed;
        top:0;
        left:0;
    }
    nav h1{
        display: block;
        float: none;
    }
    nav ul{
        float: none;
    }
    nav ul li{
        display: block;
        text-align: center;
        padding: 15px 20px;
        border-bottom: 1px solid rgba(255,255,255,.1)
    }
    #full-logo{
        display: none;
    }
}
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
    <div class = "banner">centered image
    </div>
<nav>
    <h1 id = "full-logo"><a href = "#">MyCar</a></h1>
    <ul>
        <li><a href = "#">Home</a></li>
        <li><a href = "#">About</a></li>
        <li><a href = "#">Service</a></li>
        <li><a href = "#">Portfolio</a></li>
        <li><a href = "#">Contact</a></li>
    </ul>
    <div style = "clear:both;"></div>
</nav>
<div class = "responsive-bar">
        <h3 class = "brand"><a href = "#">MyCar</a></h3>
    <h4 class = "menu">Menu</h4>
    <div style = "clear:both;"></div>
</div>

Другие вопросы по теме