Почему 100vh не занимает весь экран?

Я впервые сталкиваюсь с подобной проблемой. Пытаюсь сделать панель навигации отзывчивой. При определенной ширине я хочу, чтобы мой div ссылок навигации перешел на правую боковую панель. Но div навигационных ссылок не занимает полную высоту области просмотра даже после предоставления 100vh. Вот код -

HTML

<header>
  <nav>
    <div class="logo">Logo</div>

    <div class="nav-items">
      <li><a href = '#'>Link-1</a></li>
      <li><a href = '#'>Link-2</a></li>
      <li><a href = '#'>Link-3</a></li>
    </div>
  </nav>
</header>

SCSS

* {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}

header {
  background: blue;
    nav {
        height: 65px;
        max-width: 1340px;
        width: 100%;
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin: auto;
        padding: 1rem;

        .logo {
            font-size: 2rem;
            color: black;
        }

        .nav-items {
            li {
                display: inline;

                a {
                    color: black;
                    text-decoration: none;
                    margin-left: 2rem;
                }
            }
        }

    }
}

@media screen and (max-width: 768px) {    
    header nav .nav-items {
        position: absolute;
        right: 0;
        height: 100vh;
        width: 50%;
        border: 1px solid black;
    }
}

Ссылка на codepen -

https://codepen.io/yell0wflash/pen/JjWGwJa


person Morphine    schedule 13.05.2021    source источник
comment
Это потому, что .header.nav настроен на display: flex, но кто-то другой может дать подробное объяснение   -  person mayersdesign    schedule 13.05.2021


Ответы (3)


Установить фиксированное положение, добавить верх: 0; также height: 100vh и влево или вправо до 0 в медиа-запросе

person Uranium_x02    schedule 13.05.2021
comment
Большое спасибо. Добавление top: 0 решило мою проблему. - person Morphine; 13.05.2021

Высота составляет 100vh, но вы установили align-items:center, поэтому элемент смещен для выравнивания с другим гибким элементом.

Добавлять

header nav {
    align-items: flex-start;
}

На ваш медиа-запрос

Теперь, когда у вашего элемента nav есть отступы, вам нужно разместить это с помощью

height: calc(100vh - 16px);
person Jon P    schedule 13.05.2021

Это потому, что у вас есть align-items: center; измените это на основе медиа-запроса.

@media screen and (max-width: 768px) {    
    header nav  {
        align-items:unset;
    }
}
person Anand Govind C G    schedule 13.05.2021