Вертикально по центру: родительский элемент с 2 дочерними элементами

Пожалуйста, взгляните на этот код:

<div class = "parent">
  <header class = "child-1">
    <h1 class = "float-left">lorem...</h1>
    <div class = "float-right">lorem...</div>
  </header>
  <div class = "child-2">lorem...</div>
</div>

CSS выглядит так:

.parent {
  display: flex;
  align-items: center;
}

Применение этого приводит к тому, что и дочерний элемент-1, и дочерний элемент-2 центрируются по вертикали в одной строке. Мне нужно, чтобы дочерний элемент-2 начинался со строки 2, т. е. прямо под дочерним элементом-1.

заранее спасибо

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
0
29
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Установите flex-direction:

.parent {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  height: 100%;
}
<div class = "parent">
  <header class = "child-1">
    <h1 class = "float-left">lorem...</h1>
    <div class = "float-right">lorem...</div>
  </header>
  <div class = "child-2">lorem...</div>
</div>

Тогда вы, вероятно, захотите настроить align-items, так как я предполагаю, что вы на самом деле не хотите центрировать все по горизонтали.

Настройка flex-direction: column немного помогает, но проблема в том, что child-2 является динамическим, иногда он появляется в разметке, а иногда нет. Если он появляется, то стиль работает, как и ожидалось, но если нет, то child-1 больше не центрируется по вертикали.

javed 27.02.2019 10:46

Отредактировано. Вам нужно установить justify-content, чтобы настроить вертикальное выравнивание гибкого столбца.

James Coyle 27.02.2019 10:49

Спасибо, это решает проблему. Большое спасибо. Но без высоты: 100%

javed 27.02.2019 10:54
.parent {
  display: flex;
  flex-direction: column;
  align-items: center;
}

Было бы здорово, если бы вы добавили несколько комментариев к своему ответу, чтобы помочь другим людям понять его. Одна из основных целей этого сайта — учиться друг у друга.

Cartucho 27.02.2019 12:31

Спасибо за ваше предложение, мой английский плохой. Я пытаюсь улучшить свой уровень владения английским языком.

user8930932 27.02.2019 17:52

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