Я бы использовал flexbox для позиционирования в nav
header {
display: flex;
justify-content: space-between; // pushes the logo to the left and the nav to the right
align-items: center; // center aligns children of nav vertically
}
Если вы хотите добиться чего-то похожего без использования flexbox, вы можете расположить логотип абсолютно:
header {
position: relative; // with this all children can be positioned absolutely, relative to the header
text-align: right; // this aligns the nav to the right of the header
}
header > a {
position: absolute; // positions the logo absolute, relative to header
top: 50%; // aligns the logo in the middle of the relative parent
left: 0; // aligns the logo to the left edge of the relative parent
transform: translateY(-50%); // changes the coordinates of the logo, to center it vertically (y-axis)
}
nav {
text-align: left; // just used to reset the text-alignment in the nav elements
}
Iрассмотрит использование класса вместо выбора a-тега, например <a class="logo" href="...">...</a>
и затем header .logo {...}
в CSS вместо header > a {}
.Это больше в будущем, если вы добавите больше элементов в заголовок.
Подсказка: если логотип выше, чем nav, он переполняет родительский контейнер, поэтому вам нужно изменить высоту родительского элемента, чтобы это исправить.Если вы можете гарантировать, что навигация всегда выше, чем логотип, это не проблема для вас, и вы можете оставить высоту заголовка без изменений.