Как выровнять два элемента Flexbox?

У меня проблема с flexbox. Я попытался выровнять два элемента; один к верху контейнера, а другой к центру. В большинстве примеров flexbox использовались три элемента, а не два. Итак, я попробовал собственное решение.

#main {
  display: flex;
  flex: 1;
  flex-direction: column;
  justify-content: space-between;
  height: 100px;
  background-color: #dfdfdf;
}

#box1 {
  display: flex;
  justify-content: flex-end;
  background-color: #ff0000;
}

#box2 {
  display: flex;
  background-color: #00ff00;
}

#dummy {
  display: flex;
  opacity: 0;
}
<div id = "main">
  <div id = "box1">box1</div>
  <div id = "box2">box2</div>
  <div id = "dummy">dummy</div>
</div>

... и я также применил это к горизонтальному корпусу.

#main {
  display: flex;
  flex: 1;
  flex-direction: row;
  justify-content: space-between;
  height: 100px;
  background-color: #dfdfdf;
}

#box1 {
  display: flex;
  justify-content: flex-end;
  background-color: #ff0000;
  width: 200px;
}

#box2 {
  display: flex;
  background-color: #00ff00;
  width: 100px;
}

#dummy {
  display: flex;
  opacity: 0;
  width: 200px;
}
<div id = "main">
  <div id = "box1">box1</div>
  <div id = "box2">box2</div>
  <div id = "dummy">dummy</div>
</div>

Однако ему нужен бесполезный фиктивный элемент. Думаю, это плохая идея :(

Есть ли лучший способ решить эту проблему?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
32
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

вам не нужно добавлять этот «фиктивный» div. По моему мнению, вы должны сохранить гибкость отображения в своем контейнере, но измените justify-content: space-between на justify-content: center.

Затем просто добавьте сначала абсолютную позицию, дочерний элемент, и отобразите его в верхней части контейнера. Также не забудьте добавить относительное положение к вашему контейнеру.

Вот рабочий код:

#main {
  display: flex;
  flex: 1;
  flex-direction: column;
  justify-content: center;
  height: 100px;
  background-color: #dfdfdf;
  position: relative;
}

#box1 {
  display: flex;
  justify-content: flex-end;
  background-color: #ff0000;
  position:absolute;
  top:0;
  width:100%;
}

#box2 {
  display: flex;
  background-color: #00ff00;
}

Рабочий пример: https://jsfiddle.net/95Lwcbuk/1/

Если вы хотите использовать только flex-box, вы можете обернуть другой элемент .container вокруг каждого из ваших боксов, настроить их также на использование flex, но установите для первого значение justify-content: flex-start, а для последнего - justify-content: flex-end.

См. Пример

#main {
  display: flex;
  flex: 1;
  flex-direction: column;
  justify-content: center;
  height: 100px;
  background-color: #dfdfdf;
}
.container {
  flex-basis:50%;
  display:flex;
  flex-direction:column;
}
.container:first-child {
  justify-content: flex-start;
}
.container:last-child {
  justify-content: flex-end;
}
#box1 {
  background-color: #ff0000;
}
#box2 {
  background-color: #00ff00;
}
<div id = "main">
  <div class = "container">
    <div id = "box1">box1</div>
  </div>
  <div class = "container">          
    <div id = "box2">box2</div>
  </div>
</div>

Другие вопросы по теме