Почему возникает проблема с расположением элемента?

Недавно начал изучать CSS и HTML и столкнулся с такой проблемой: элемент nav-links центрируется относительно оставшегося места а не всего navbar

Пока сумел отцентрировать как хотел только при помощи добавления невидимого элемента, но мне кажется, что это неправильно, поэтому надеюсь на более рациональные предложения.

/* Navigation Bar */

.navbar {
  width: 75%;
  height: 3.8rem;
  background-color: hwb(0 15% 85% / 0.473);
  border-radius: 40px;
  margin: auto;
  margin-top: 1rem;
  display: flex;
  align-items: center;
  padding: 0 20px;
  justify-content: space-between;
}

.logo h1 {
  display: flex;
  align-items: center;
  color: aliceblue;
  font-size: 20px;
}

.nav-links {
  display: flex;
  align-self: center;
  gap: 20px;
  margin: auto;
}

.nav-links a {
  color: aliceblue;
  text-decoration: none;
  padding: 8px 16px;
  transition: background-color 0.3s;
}
<header class="navbar">
  <div class="logo">
    <h1>TorFlicks</h1>
  </div>
  <nav class="nav-links">
    <a href="#">Главная</a>
    <a href="#">История</a>
    <a href="#">⌕</a>
  </nav>
</header>
<main>


Ответы (1 шт):

Автор решения: Andrei Fedorov

Самое простое решение - удалить h1 из потока с помощью position: absolute. Тогда он не будет участвовать в расчете размеров других элементов внутри их общего родителя.

Проблема может появится на узких экранах, когда навигация и заголовок наложатся друг на друга. Однако обычно в таких случаях меню прячут под гамбургер и проблема не возникнет.

Строго говоря некорректно так использовать тег h1. По смыслу TopFlicks - это логотип. Тогда как h1 - это заголовок страницы, влияющий на поисковое продвижение.

/* Navigation Bar */

.navbar {
  width: 75%;
  height: 3.8rem;
  background-color: hwb(0 15% 85% / 0.473);
  border-radius: 40px;
  margin: auto;
  margin-top: 1rem;
  display: flex;
  align-items: center;
  padding: 0 20px;
  justify-content: space-between;
  
  position: relative;
}

.logo h1 {
  display: flex;
  align-items: center;
  color: aliceblue;
  font-size: 20px;
  
  position: absolute;
  top: 50%;
  translate: 0 -50%;
  margin: 0;
}

.nav-links {
  display: flex;
  align-self: center;
  gap: 20px;
  margin: auto;
}

.nav-links a {
  color: aliceblue;
  text-decoration: none;
  padding: 8px 16px;
  transition: background-color 0.3s;
  
  display: grid;
  place-content: center;
}
<header class="navbar">
  <div class="logo">
    <h1>TorFlicks</h1>
  </div>
  <nav class="nav-links">
    <a href="#">Главная</a>
    <a href="#">История</a>
    <a href="#">⌕</a>
  </nav>
</header>
<main>

→ Ссылка