Я не могу центрировать <h2> по вертикали в теге <div>

У меня проблема с центрированием в другом теге. У меня нет проблем с горизонтальным выравниванием во флексоксе или старомодным способом, но вертикальное для меня все еще проблема.

div {
    display: inline-block;
    background-color: green;    
    width: 130px;
    height: 45px;
    margin-top: 20px;
    text-align: center;
    
}
h2 {
    font-size: 20px;
    font-weight: 100;
    display: flex;
    justify-content: center;
    align-content: center;

Свойства flex, такие как выравнивание содержимого и выравнивание элементов, должны находиться в div, а не в h2. Размещение на h2 сделает элементы внутри него выровненными.

vishnu sandhireddy 11.11.2022 17:18
Приемы 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 сценарий полностью изменился.
0
2
50
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

div должен иметь:

div {
  display:flex;
  align-items: center;
}
Ответ принят как подходящий

Есть несколько проблем:

  1. Элемент h2 не находится во гибком контейнере (вы должны установить display: flex на родителя div)
  2. Свойства justify-content и align-content должны быть установлены для контейнера flex, а не для элемента flex.
  3. Для вертикального центрирования гибкого элемента во гибком контейнере с помощью flex-direction: row вы должны использовать align-items, а не align-content

div {
    display: flex;
    justify-content: center;
    align-items: center;    
    width: 130px;
    height: 45px;
    margin-top: 20px;
    text-align: center;
    background-color: green;    
}

h2 {
    font-size: 20px;
    font-weight: 100;
}
<div>
  <h2>Headline 2</h2>
</div>

Наилучший подход к тому, чтобы сделать блок Children Div вертикально центрированным, состоит в том, чтобы отображать Flex div Mother, а не блок Children.

div {
    display: inline-flex;
    background-color: green;    
    width: 130px;
    height: 45px;
    margin-top: 20px;
    justify-content: center;
    align-items: center;
    
}
h2 {
    font-size: 20px;
    font-weight: 100;
    margin: 0;
}
<div>
    <h2>hello</h2>
</div>

Я согласен на 100% с ответами, отображающими гибкость контейнера, а не ребенка.

Даже если я всегда использую flex и css grid, я хотел бы добавить еще одно решение «по старинке», основанное на высоте строки:

        div {
            display: inline-block;
            background-color: green;
            width: 130px;
            margin-top: 20px;
            line-height: 45px;
            vertical-align: middle;
            text-align: center;
        }
        h2 {
            font-size: 20px;
            font-weight: 100;
            line-height: 45px;
        }

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