CSS flexbox вертикальное/горизонтальное центральное изображение БЕЗ прямое определение родительской высоты
С только родительский div
и дочерний элемент img
, как показано ниже, как вертикально и горизонтально центрировать элемент img
, а явно не, определяющий height
родительского div
?
<div class="do_not_define_height">
<img alt="No, he'll be an engineer." src="theknack.png" />
</div>
Я не очень хорошо знаком с flexbox, поэтому я в порядке, если flexbox сам заполняет всю высоту, но не любые другие несвязанные свойства.
Ответы
Ответ 1
Без явного определения height
я решил, что мне нужно применить значение flex
к элементам родителя и деда div
...
<div style="display: flex;">
<div style="display: flex;">
<img alt="No, he'll be an engineer." src="theknack.png" style="margin: auto;" />
</div>
</div>
Если вы используете один элемент (например, мертвый текст в одном элементе flex
), используйте следующее:
align-items: center;
display: flex;
justify-content: center;
Ответ 2
Просто добавьте следующие правила в родительский элемент:
display: flex;
justify-content: center; /* align horizontal */
align-items: center; /* align vertical */
Здесь демонстрация примера (изменить размер окна, чтобы увидеть выравнивание изображения)
Поддержка браузера для Flexbox в настоящее время неплоха.
Для кросс-браузерной совместимости для display: flex
и align-items
вы можете добавить более старый Flexbox синтаксис:
display: -webkit-box;
display: -webkit-flex;
display: -moz-box;
display: -ms-flexbox;
display: flex;
-webkit-flex-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;