Вы можете сделать это с помощью align-items: stretch
(что является значением по умолчанию для align-items
), но вам следует изменить структуру HTML.
.column {
background: silver;
}
h2 {
background: cornflowerblue;
margin: 0;
}
.block-1 {
background: tomato;
}
.block-2 {
background: brown;
}
.row {
display: flex;
/* Not required because it's already the default value */
align-items: stretch;
}
.row > *{
flex: 1;
}
<div class="row">
<h2>heading</h2>
<h2>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod, maiores!</h2>
</div>
<div class="row">
<div class="block-1">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Debitis, nesciunt.</div>
<div class="block-1">Lorem ipsum</div>
</div>
<div class="row">
<div class="block-2">Lorem ipsum dolor sit amet.</div>
<div class="block-2">Lorem ipsum dolor sit amet, consectetur adipisicing elit. In quam praesentium suscipit laudantium illo voluptatibus eligendi, est exercitationem commodi reiciendis.</div>
</div>
Flexbox работает как по оси X, так и по оси Y.Когда вы используете flex-direction: column
, вы меняете главную ось с X на Y. Вы можете управлять главной осью с помощью свойства justify-content
, а вспомогательной оси - с помощью свойства align-items
.
Дело в том, чтоalign-items
работает со значением stretch
, но justify-content
не может.
Поэтому, если вы хотите, чтобы высота была одинаковой (ось Y), вам нужно растянуть ее с помощью align-items: stretch
, ноalign-items
работает только на вторичной оси, поэтому в этом случае главной осью должна быть ось X, а это означает, что вы не можете использовать flex-direction: column
, чтобы сделать их одинаковой высоты.