Мне не удается что-то сделать со свойством flex. По сути, я хочу, чтобы мой логотип располагался по центру слева, а ссылки - справа. Однако я не могу этого добиться, потому что они не разделятся.
Заранее спасибо, если кто знает, как это решить.
Имейте в виду, что моя цель - выровнять по вертикали все мои элементы в середине навигационной панели и сделать так, чтобы логотип находился слева, а ссылки - справа.
* {
margin: 0px;
padding: 0px;
font-family: Consolas;
}
/* NOTE: NAVBAR */
.main-navbar {
height: 60px;
box-shadow: 0px 7px 22px 0px rgba(50, 50, 49, 0.1);
width: 100%;
display: inline-flex;
}
.logo-image {
height: 50px;
width: 50px;
margin-left: 5px;
}
.logo-image-warp {
display: inline-flex;
align-items: center;
justify-content: flex-start;
}
.nav-link-warp {
display: inline-flex;
align-items: center;
justify-content: flex-end !important;
float: right;
}
.nav-link {
font-size: 18px;
margin: 0px 10px;
}<!DOCTYPE html>
<html lang = "fr" dir = "ltr">
<head>
<meta charset = "utf-8">
<link rel = "stylesheet" href = "./data/css/master.css">
<title>CulturesCITY</title>
</head>
<body>
<nav class = "main-navbar">
<div class = "logo-image-warp">
<img src = "./data/ressources/final-logo.png" alt = "LOGO" class = "logo-image">
</div>
<div class = "nav-link-warp">
<a class = "nav-link">Accueil</a>
<a class = "nav-link">À propos</a>
<a class = "nav-link">Faire un don</a>
</div>
</nav>
</body>
</html>





Для вертикальное центрирование используйте align-items: center, а для горизонтальный интервал - justify-content: space-between, чтобы разделить их, насколько это возможно.
Я также изменил значение свойства display на flex, потому что оно больше соответствующий поведению, и закомментировал ненужный:
* {
margin: 0px;
padding: 0px;
font-family: Consolas;
}
/* NOTE: NAVBAR */
.main-navbar {
height: 60px;
box-shadow: 0px 7px 22px 0px rgba(50, 50, 49, 0.1);
/*width: 100%; not necessary*/
display: flex; /* modified */
justify-content: space-between; /* added */
align-items: center; /* added */
}
.logo-image {
height: 50px;
width: 50px;
margin-left: 5px;
}
/* not necessary
.logo-image-warp {
display: inline-flex;
align-items: center;
justify-content: flex-start;
}
*/
/* instead use */
.logo-image {display: block} /* or better for images in general (img {display: block}) which removes the default bottom whitespace/margin */
.nav-link-warp {
display: inline-flex; /* only this has the effect, with this example */
/*align-items: center;*/
/*justify-content: flex-end !important;*/
/*float: right;*/
}
.nav-link {
font-size: 18px;
margin: 0px 10px;
}<nav class = "main-navbar">
<div class = "logo-image-warp">
<img src = "http://placehold.it/100x100" alt = "LOGO" class = "logo-image">
</div>
<div class = "nav-link-warp">
<a class = "nav-link">Accueil</a>
<a class = "nav-link">À propos</a>
<a class = "nav-link">Faire un don</a>
</div>
</nav>Вы можете полностью удалить .logo-image-wrap и добавить align-items:center; и justify-content:space-between; в .main-navbar:
* {
margin: 0px;
padding: 0px;
font-family: Consolas;
}
/* NOTE: NAVBAR */
.main-navbar {
height: 60px;
box-shadow: 0px 7px 22px 0px rgba(50, 50, 49, 0.1);
width: 100%;
display: inline-flex;
align-items:center;
justify-content:space-between;
}
.logo-image {
height: 50px;
width: 50px;
margin-left: 5px;
}
.nav-link-warp {
display: inline-flex;
align-items: center;
justify-content: flex-end !important;
float: right;
}
.nav-link {
font-size: 18px;
margin: 0px 10px;
}<nav class = "main-navbar">
<div class = "logo-image-warp">
<img src = "./data/ressources/final-logo.png" alt = "LOGO" class = "logo-image">
</div>
<div class = "nav-link-warp">
<a class = "nav-link">Accueil</a>
<a class = "nav-link">À propos</a>
<a class = "nav-link">Faire un don</a>
</div>
</nav>Обновите свой код следующим фрагментом ...
* {
margin: 0px;
padding: 0px;
font-family: Consolas;
}
/* NOTE: NAVBAR */
.main-navbar {
height: 60px;
box-shadow: 0px 7px 22px 0px rgba(50, 50, 49, 0.1);
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.logo-image {
height: 50px;
width: 50px;
margin-left: 5px;
}
.logo-image-warp {
}
.nav-link-warp {
float: right;
}
.nav-link {
font-size: 18px;
margin: 0px 10px;
}<!DOCTYPE html>
<html lang = "fr" dir = "ltr">
<head>
<meta charset = "utf-8">
<link rel = "stylesheet" href = "./data/css/master.css">
<title>CulturesCITY</title>
</head>
<body>
<nav class = "main-navbar">
<div class = "logo-image-warp">
<img src = "./data/ressources/final-logo.png" alt = "LOGO" class = "logo-image">
</div>
<div class = "nav-link-warp">
<a class = "nav-link">Accueil</a>
<a class = "nav-link">À propos</a>
<a class = "nav-link">Faire un don</a>
</div>
</nav>
</body>
</html>Измените .main-navbar на display: flex вместо display: inline-flex. В противном случае он будет рассматриваться как встроенный элемент, который по умолчанию не будет охватывать всю ширину своего контейнера.
Тогда вам нужно будет установить justify-content: space-between на тот же элемент. Нет необходимости настраивать display: inline-flex на отдельные элементы. И не смешивайте float с flexbox.
.main-navbar {
height: 60px;
box-shadow: 0px 7px 22px 0px rgba(50, 50, 49, 0.1);
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
}
.logo-image {
height: 50px;
width: 50px;
margin-left: 5px;
}
.logo-image-warp { }
.nav-link-warp { }
.nav-link {
font-size: 18px;
margin: 0px 10px;
} <nav class = "main-navbar">
<div class = "logo-image-warp">
<img src = "http://via.placeholder.com/350x150" class = "logo-image">
</div>
<div class = "nav-link-warp">
<a class = "nav-link">Accueil</a>
<a class = "nav-link">À propos</a>
<a class = "nav-link">Faire un don</a>
</div>
</nav>Используйте следующий CSS для контейнера:
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: center;
align-content: stretch;
align-items: center;
Затем добавьте пустой разделитель с flex-grow = 1, чтобы создать пространство между вашими элементами и логотипом.
* {
margin: 0px;
padding: 0px;
font-family: Consolas;
}
/* NOTE: NAVBAR */
.main-navbar {
height: 60px;
box-shadow: 0px 7px 22px 0px rgba(50, 50, 49, 0.1);
width: 100%;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: center;
align-content: stretch;
align-items: center;
}
.separator {
order: 0;
flex: 1 1 auto;
align-self: auto;
}
.logo-image {
height: 50px;
width: 50px;
margin-left: 5px;
}
.logo-image-warp {
display: inline-flex;
align-items: center;
justify-content: flex-start;
}
.nav-link-warp {
display: inline-flex;
align-items: center;
justify-content: flex-end !important;
float: right;
}
.nav-link {
font-size: 18px;
margin: 0px 10px;
}<!DOCTYPE html>
<html lang = "fr" dir = "ltr">
<head>
<meta charset = "utf-8">
<link rel = "stylesheet" href = "./data/css/master.css">
<title>CulturesCITY</title>
</head>
<body>
<nav class = "main-navbar">
<div class = "logo-image-warp">
<img src = "./data/ressources/final-logo.png" alt = "LOGO" class = "logo-image">
</div>
<div class = "separator"></div>
<div class = "nav-link-warp">
<a class = "nav-link">Accueil</a>
<a class = "nav-link">À propos</a>
<a class = "nav-link">Faire un don</a>
</div>
</nav>
</body>
</html>Я упростил ваш CSS и использовал flex вместо inline-flex. Дополнительный комментарий в источнике.
* {
margin: 0px;
padding: 0px;
font-family: Consolas;
}
/* NOTE: NAVBAR */
.main-navbar {
height: 60px;
box-shadow: 0px 7px 22px 0px rgba(50, 50, 49, 0.1);
width: 100%;
display: flex;
align-items: center; /* Vertical alignment in the middle */
}
.logo-image {
height: 50px;
width: 50px;
margin-left: 5px;
}
.nav-link-warp {
display: flex;
justify-content: flex-end; /* Aligns flex items at the right */
margin-left: auto; /* Pushes this class to the right side */
}
.nav-link {
font-size: 18px;
margin: 0px 10px;
}<nav class = "main-navbar">
<div class = "logo-image-warp">
<img src = "http://via.placeholder.com/50x50" alt = "LOGO" class = "logo-image">
</div>
<div class = "nav-link-warp">
<a class = "nav-link">Accueil</a>
<a class = "nav-link">À propos</a>
<a class = "nav-link">Faire un don</a>
</div>
</nav>Вот и все, попробуйте этот код :)
* {
margin: 0px;
padding: 0px;
font-family: Consolas;
}
/* NOTE: NAVBAR */
.main-navbar {
height: 60px;
box-shadow: 0px 7px 22px 0px rgba(50, 50, 49, 0.1);
width: 100%;
display: inline-flex;
}
.logo-image {
height: 50px;
width: 50px;
margin-left: 5px;
}
.logo-image-warp {
display: inline-flex;
align-items: center;
justify-content: flex-start;
max-width: 40%;
margin-left: 20%;
margin-right: 20%;
}
.nav-link-warp {
display: inline-flex;
align-items: center;
justify-content: flex-end !important;
float: right;
}
.nav-link {
font-size: 18px;
margin: 0px 10px;
max-width: 60%;
}<!DOCTYPE html>
<html lang = "fr" dir = "ltr">
<head>
<meta charset = "utf-8">
<link rel = "stylesheet" href = "./data/css/master.css">
<title>CulturesCITY</title>
</head>
<body>
<nav class = "main-navbar">
<div class = "logo-image-warp">
<img src = "./data/ressources/final-logo.png" alt = "LOGO" class = "logo-image">
</div>
<div class = "nav-link-warp">
<a class = "nav-link">Accueil</a>
<a class = "nav-link">À propos</a>
<a class = "nav-link">Faire un don</a>
</div>
</nav>
</body>
</html>
Мне просто любопытно, что означает "по центру слева"