Вы можете легко решить эту проблему с помощью CSS flexbox. Подробнее о CSS flexbox на MDN .
Добавьте это CSS к .topnav
:
display: flex;
flex-flow: row wrap;
justify-content: space-between;
Что он делает? Это гарантирует, что оставшееся пространство между дочерними элементами контейнера (в данном случае три div внутри) распределено равномерно.
Один небольшой знак, использующий float
для позиционирования элементов, больше не считается лучшей практикой.
.topnav {
display: flex;
flex-flow: row wrap;
justify-content: space-between;
/* Styling */
background: #eee;
color: #fff;
padding: 5px 0;
}
/* Styling */
body {
margin: 0;
padding: 0;
}
<div class="topnav">
<div class="topnav-left">
<a href="/">Home</a>
</div>
<div class="topnav-center">
<a href="/about-me">Logo</a>
</div>
<div class="topnav-right">
<a href="/login">Login</a>
</div>
</div>
Редактировать Решение с левым и центральным элементом, вам просто нужно пустое div
для правой части. Ниже приведен фрагмент кода.
.topnav {
display: flex;
flex-flow: row wrap;
/* Styling */
background: #eee;
color: #fff;
padding: 5px 0;
}
.topnav-left,
.topnav-right {
flex: 1;
}
/* Styling */
body {
margin: 0;
padding: 0;
}
<div class="topnav">
<div class="topnav-left">
<a href="/">Home</a>
</div>
<div class="topnav-center">
<a href="/about-me">Logo</a>
</div>
<div class="topnav-right">
</div>
</div>