Выровнять flex внутри другого flex - PullRequest
1 голос
/ 16 марта 2019

Я пытаюсь создать мобильную раскладку с логотипом на левой навигационной панели в середине и шевроном для отображения и скрытия элементов навигационной панели (мне сейчас неинтересна эта функция).

Но сейчас я пытаюсь добиться чего-то подобного:

+------+---------+---------+
| logo |  lorem  | chevron |
+------+---------+---------+
       | ipsum   |         
       +---------+
       | dolorem |    
       +---------+

Я пытался выровнять первый элемент ul с иконками.

Любые идеи о том, как я могу добиться этого при сохранении синтаксиса HTML?

* {
  box-sizing: border-box;
}

body {
  font-family: "IBM Plex Mono", monospace;
  font-size: 18px;
}

.main-nav {
  font-size: 24px;
  display: flex;
  justify-content: space-around;
  align-items: center;
  border: 1px solid red;
  height: 50px;
}

.main-nav__list {
  display: flex;
  flex: 1;
  padding: 0;
  list-style-type: none;
  border: 1px solid greenyellow;
  flex-direction: column;
  align-self: flex-start;
  position: relative;
}

.main-nav__icon {
  height: 24px;
  width: auto;
  margin: auto;
}

.main-nav__links {
  text-decoration: none;
  color: white;
}

.main-nav__list-item {
  width: 100%;
  text-align: center;
}


/*.main-nav__list-item:not(:first-child){
  display: none;
}*/

.main-nav__list-item--blue {
  background-color: #1c77c3;
}

.main-nav__list-item--green {
  background-color: #00aa00;
}

.main-nav__list-item--orange {
  background: #dd2e02;
}

.main-nav__logo {
  flex: initial;
  width: 50px;
  background-color: black;
  display: flex;
  height: 100%;
  color: white;
}
<script src="https://use.fontawesome.com/releases/v5.7.2/js/all.js"></script>
<header class="">
  <nav class="main-nav">
    <a class="main-nav__logo" href="#"><i class="far fa-user main-nav__icon" alt="logo"></i></a>
    <ul class="main-nav__list">
      <li class="main-nav__list-item main-nav__list-item--blue"><a class="main-nav__links" href="#">Lorem</a></li>
      <li class="main-nav__list-item main-nav__list-item--green"><a class="main-nav__links" href="#">Ipsum</a></li>
      <li class="main-nav__list-item main-nav__list-item--orange"><a class="main-nav__links" href="#">dolorem</a></li>
    </ul>
    <a class="main-nav__logo" href="#"><i class="fas fa-chevron-down main-nav__icon" alt="chevron down"></i></a>
  </nav>
</header>

1 Ответ

1 голос
/ 16 марта 2019

К вашему .main-nav__list добавьте:

/* Add margin: 0; and height: 300%; */
margin: 0;
height: 300%;

К вашему .main-nav__list-item. добавить:

/* Add flex-grow: 1; and center items */
flex-grow: 1;
display: flex;
align-items: center;
justify-content: center;

* {
  box-sizing: border-box;
}

body {
  font-family: "IBM Plex Mono", monospace;
  font-size: 18px;
}

.main-nav {
  font-size: 24px;
  display: flex;
  justify-content: space-around;
  align-items: center;
  border: 1px solid red;
  height: 50px;
}

.main-nav__list {
  display: flex;
  flex: 1;
  padding: 0;
  list-style-type: none;
  border: 1px solid greenyellow;
  flex-direction: column;
  align-self: flex-start;
  position: relative;
  /* Add margin: 0; and height: 300%; */
  margin: 0;
  height: 300%;
}

.main-nav__icon {
  height: 24px;
  width: auto;
  margin: auto;
}

.main-nav__links {
  text-decoration: none;
  color: white;
}

.main-nav__list-item {
  width: 100%;
  text-align: center;
  /* Add flex-grow: 1; and center items */
  flex-grow: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}


/*.main-nav__list-item:not(:first-child){
  display: none;
}*/

.main-nav__list-item--blue {
  background-color: #1c77c3;
}

.main-nav__list-item--green {
  background-color: #00aa00;
}

.main-nav__list-item--orange {
  background: #dd2e02;
}

.main-nav__logo {
  flex: initial;
  width: 50px;
  background-color: black;
  display: flex;
  height: 100%;
  color: white;
}
<script src="https://use.fontawesome.com/releases/v5.7.2/js/all.js"></script>
<header class="">
  <nav class="main-nav">
    <a class="main-nav__logo" href="#"><i class="far fa-user main-nav__icon" alt="logo"></i></a>
    <ul class="main-nav__list">
      <li class="main-nav__list-item main-nav__list-item--blue"><a class="main-nav__links" href="#">Lorem</a></li>
      <li class="main-nav__list-item main-nav__list-item--green"><a class="main-nav__links" href="#">Ipsum</a></li>
      <li class="main-nav__list-item main-nav__list-item--orange"><a class="main-nav__links" href="#">dolorem</a></li>
    </ul>
    <a class="main-nav__logo" href="#"><i class="fas fa-chevron-down main-nav__icon" alt="chevron down"></i></a>
  </nav>
</header>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...