JSFiddle - React, Tailwind, and code Playground
HTML
<!-- Не понятно поведение -->
<div class="parent">
<div class="child">
1<br />2
</div>
</div>
<!-- Понятно поведение -->
<div class="classic">
<div class="classic-child">
1<br />2
</div>
<div class="spring"></div>
</div>
<!-- Без распорки -->
<div class="classic1">
<div class="classic-child">
1<br />2
</div>
</div>
CSS
.parent {
position: relative;
width: 50%;
//padding: 50% 0 0 0;
//line-height: 0;
background: red;
text-align: center;
}
.child {
display: inline-block;
vertical-align: middle;
color: #fff;
font-size: 16px;
line-height: 1.2;
margin: -100% 0 0 0;
background: green;
}
.classic1,
.classic {
height: 300px;
width: 300px;
background: green;
text-align: center;
}
.classic1 {
background: blue;
}
.classic-child {
display: inline-block;
vertical-align: middle;
background: red;
}
.spring {
display: inline-block;
vertical-align: middle;
height: 100%;
position: relative;
}