Как можно устранить вертикальный скролл при активации класса is-active для элемента header-guest__overlay, который добавляется при нажатии на кнопку header-guest__burger-button?

Как сделать так, чтобы содержимое под элементом eader-guest__overlay, а также элемент header-guest__burger-button, могли прокручиваться? Кроме того, когда в eader-guest__overlay будет много контента, как добавить вертикальную прокрутку? <br/> Заранее благодарю за помощь! <br/> Вот код: <br/> <pre><code class="html">&lt;header class="header-guest"&gt;
        &lt;div class="header-guest__body"&gt;
            &lt;div class="header-guest__inner container"&gt;
                &lt;a href="./index.html" class="header-guest__logo logo"&gt;
                    &lt;img src="../src/assets/images/logo.png" alt="" class="logo__image" width="157" height="48"
                        loading="lazy"&gt;
                &lt;/a&gt;
                &lt;div class="header-guest__overlay is-active"&gt;
                    &lt;nav class="header-guest__menu"&gt;
                        &lt;ul class="header-guest__menu-list"&gt;
                            &lt;li class="header-guest__menu-item"&gt;
                                &lt;a href="" class="header-guest__menu-link is-active"&gt;Главная&lt;/a&gt;
                            &lt;/li&gt;
                            &lt;li class="header-guest__menu-item"&gt;
                                &lt;a href="" class="header-guest__menu-link"&gt;О нас&lt;/a&gt;
                            &lt;/li&gt;
                            &lt;li class="header-guest__menu-item"&gt;
                                &lt;a href="" class="header-guest__menu-link"&gt;Поддержка&lt;/a&gt;
                            &lt;/li&gt;
                        &lt;/ul&gt;
                    &lt;/nav&gt;
                &lt;/div&gt;
                &lt;a class="header-guest__link button button--transparent" href="#"&gt;
  • 15 марта 2025 г. 19:04
Ответы на вопрос 1
Чтобы устранить вертикальный скролл при активации класса `is-active` для элемента `header-guest__overlay`, и при этом сделать так, чтобы содержимое под этим элементом и сам элемент `header-guest__burger-button` могли прокручиваться, вам нужно будет скорректировать CSS и, возможно, JavaScript.

Вот пример, как это можно сделать:

### 1. CSS

Вам нужно будет добавить стили для управления скроллом и отображением элементов:

```css
body {
    overflow: hidden; /* Скрыть скролл на body */
}

.header-guest__overlay {
    position: fixed; /* Занимает весь экран */
    top: 0;
    left: 0;
    width: 100%;
    height: 100%; /* Полная высота */
    background: rgba(0, 0, 0, 0.8); /* Полупрозрачный фон */
    z-index: 999; /* Убедитесь, что на верхнем уровне */
    overflow-y: auto; /* Разрешить вертикальный скролл при необходимости */
    display: none; /* Скрыто по умолчанию */
}

.header-guest__overlay.is-active {
    display: block; /* Показывать при добавлении класса is-active */
}

.header-guest__burger-button {
    position: relative; /* или любое другое значение, чтобы ему была нужна позиция */
    z-index: 1000; /* Чтобы кнопка была выше фона */
}
```

### 2. JavaScript

Также вам нужно будет управлять добавлением и удалением класса `is-active` с помощью JavaScript. Код будет примерно таким:

```javascript
const burgerButton = document.querySelector('.header-guest__burger-button');
const overlay = document.querySelector('.header-guest__overlay');

burgerButton.addEventListener('click', () => {
    overlay.classList.toggle('is-active');
    if (overlay.classList.contains('is-active')) {
        document.body.style.overflow = 'hidden'; // Отключить скролл на body
    } else {
        document.body.style.overflow = ''; // Включить скролл на body
    }
});
```

### 3. Обработка содержимого

Если вам нужно обработать ситуацию, когда контент в `header-guest__overlay` превышает высоту окна браузера, то `overflow-y: auto;` в CSS как раз и позволит добавить вертикальный скролл к этому элементу.

### Полный пример

С учетом вышеприведенного кода, ваш окончательный код может выглядеть так:

```html
<header class="header-guest">
    <div class="header-guest__body">
        <div class="header-guest__inner container">
            <a href="./index.html" class="header-guest__logo logo">
                <img src="../src/assets/images/logo.png" alt="" class="logo__image" width="157" height="48" loading="lazy">
            </a>
            <div class="header-guest__overlay">
                <nav class="header-guest__menu">
                    <ul class="header-guest__menu-list">
                        <li class="header-guest__menu-item">
                            <a href="" class="header-guest__menu-link is-active">Главная</a>
                        </li>
                        <li class="header-guest__menu-item">
                            <a href="" class="header-guest__menu-link">О нас</a>
                        </li>
                        <li class="header-guest__menu-item">
                            <a href="" class="header-guest__menu-link">Поддержка</a>
                        </li>
                    </ul>
                </nav>
            </div>
            <a class="header-guest__link button button--transparent header-guest__burger-button" href="#">Menu</a>
        </div>
    </div>
</header>
```

Теперь, когда вы нажимаете на кнопку `header-guest__burger-button`, появляется `header-guest__overlay` с возможностью прокрутки контента, а содержимое под ним остается прокручиваемым.
Похожие вопросы