Навбар: до и после
Старый подход. Логотип и меню разводили через float и ручные
отступы. Приходилось чистить float (clearfix), а вертикальное выравнивание было
отдельной болью.
.logo { float: left; }
.menu { float: right; }
.menu li { display: inline-block; margin-left: 20px; }
.navbar::after { content: ""; display: block; clear: both; }
Современный подход. Одна строка justify-content: space-between
разводит блоки по краям, align-items: center выравнивает по вертикали. Никаких
clearfix.
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
gap: 1rem;
}
<nav class="navbar">
<strong>Logo</strong>
<div class="menu">…</div>
</nav>
Центрирование: до и после
Старый подход. Центрировать блок по вертикали было трудно: использовали
position: absolute + transform: translate(-50%, -50%) или хаки с
line-height/table-cell.
.box {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
Современный подход. Две строки на контейнере — и блок по центру по обеим осям.
.hero {
display: flex;
justify-content: center;
align-items: center;
}
<div class="hero">
<div class="box">По центру</div>
</div>