#html #css #sass
#HTML #css #sass
Вопрос:
Я пытаюсь создать панель навигации с помощью flexbox. Я хочу, чтобы menu-center
div был выровнен по левому краю рядом с логотипом. и menu-right
от обоих menu-left
и menu-center
вправо.
Как я могу это сделать?
#main-nav {
background: #181d2f;
}
#main-nav .menu-wrap {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
#main-nav .menu-left {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
}
#main-nav .menu-left .logo img {
height: 60px;
}
#main-nav .menu-center {
-webkit-box-flex: 2;
-ms-flex: 2;
flex: 2;
}
#main-nav .menu-center ul {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
#main-nav .menu-center ul li {
padding: 1.75rem 0;
}
#main-nav .menu-center ul li a {
color: #fff;
padding: 1.5rem 1.25rem;
-webkit-transition: all 0.4s ease;
transition: all 0.4s ease;
}
#main-nav .menu-center ul li a:hover {
color: #f40c43;
}
#main-nav .menu-right {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
#main-nav .menu-right .login-wrap a {
padding: 0 0.25rem;
}
<header>
<nav id="main-nav">
<div class="container">
<div class="menu-wrap">
<div class="menu-left">
<div class="logo">
<img src="assets/img/logo-light.png" alt="muslimabc-logo" />
</div>
</div>
<div class="menu-center">
<ul>
<li><a href="#">About Us</a></li>
<li><a href="#">Listings</a></li>
<li>
<a href="#">Products <i class="fas fa-chevron-down"></i></a>
</li>
<li><a href="#">Be A Vendor</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
<div class="menu-right">
<div class="login-wrap text-white">
<i class="fas fa-user-alt mr-1"></i> <a href="#">Sign In</a> or
<a href="#">Register</a>
</div>
<div class="cta-btn">
<a class="btn-light" href="#"
><i class="fas fa-plus mr-1"></i> Add Listing</a
>
</div>
</div>
</div>
</div>
</nav>
</header>
Ответ №1:
Если вы хотите создать левую и правую стороны в контейнере flex justify-content: space-between;
, вам нужно иметь два элемента внутри этого контейнера.
В приведенном ниже фрагменте я создал .menu-left-side
оболочку для ваших .menu-left
.menu-center
элементов и . Ваше .menu-right
имя остается тем же. Я настоятельно рекомендую вам переименовать элементы левой стороны соответствующими именами классов.
Я также удалил некоторые CSS-правила, связанные с flex, из вашего фрагмента, чтобы лучше выровнять вещи.
#main-nav {
background: #181d2f;
}
#main-nav .menu-wrap {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
#main-nav .menu-left {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
}
#main-nav .menu-left .logo img {
height: 60px;
}
#main-nav .menu-center ul {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
#main-nav .menu-center ul li {
padding: 1.75rem 0;
}
#main-nav .menu-center ul li a {
color: #fff;
padding: 1.5rem 1.25rem;
-webkit-transition: all 0.4s ease;
transition: all 0.4s ease;
}
#main-nav .menu-center ul li a:hover {
color: #f40c43;
}
#main-nav .menu-right {
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
#main-nav .menu-right .login-wrap a {
padding: 0 0.25rem;
}
#main-nav .menu-left-side{
display: flex;
align-items: center;
}
<header>
<nav id="main-nav">
<div class="container">
<div class="menu-wrap">
<div class="menu-left-side">
<div class="menu-left">
<div class="logo">
<img src="assets/img/logo-light.png" alt="muslimabc-logo" />
</div>
</div>
<div class="menu-center">
<ul>
<li><a href="#">About Us</a></li>
<li><a href="#">Listings</a></li>
<li>
<a href="#">Products <i class="fas fa-chevron-down"></i></a>
</li>
<li><a href="#">Be A Vendor</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
</div>
<div class="menu-right">
<div class="login-wrap text-white">
<i class="fas fa-user-alt mr-1"></i> <a href="#">Sign In</a> or
<a href="#">Register</a>
</div>
<div class="cta-btn">
<a class="btn-light" href="#"><i class="fas fa-plus mr-1"></i> Add Listing</a>
</div>
</div>
</div>
</div>
</nav>
</header>
Ответ №2:
Я не знаю, правильно ли я понял ваш запрос, но попробуйте этот код css, и я прикрепил ссылку для codepen
css
#main-nav {
background: #181d2f;
}
#main-nav .menu-wrap {
display: flex;
align-items:center;
}
#main-nav .menu-left .logo img {
height: 60px;
}
#main-nav .menu-center ul {
display: flex;
align-items:center;
list-style:none;
padding: 0;
}
#main-nav .menu-center ul li {
padding: 1.75rem 0;
}
#main-nav .menu-center ul li a {
color: #fff;
padding: 1.5rem 1.25rem;
transition: all 0.4s ease;
}
#main-nav .menu-center ul li a:hover {
color: #f40c43;
}
#main-nav .menu-right {
margin-left:auto;
display:flex;
justify-content:space-between;
}
#main-nav .menu-right .login-wrap a {
padding: 0 0.25rem;
}
codepen https://codepen.io/ahamdan/pen/qBNOreY?editors=1100
PS: вышеизложенное не реагирует на меньший экран, вам нужно указать медиа-запросы и изменить свойства в точке прерывания экрана, чтобы он был отзывчивым