У меня есть контейнер переменной высоты, и я хотел бы поместить элемент в его середину. Итак, я установил эти стили:
#parent {
position: relative;
}
#child {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
Которые работают в большинстве случаев. Однако высота контейнера не только переменная, но и постоянно меняется.
Из-за этого этот код не будет работать. Пример:
@keyframes changeSize {
0% {
height: 100px;
}
50% {
height: 150px;
}
100% {
height: 100px;
}
}
#parent {
position: relative;
width: 400px;
height: 300px;
background: red;
animation-name: changeSize;
animation-duration: 2s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
}
#child {
position: absolute;
margin-block-start: 0;
margin-block-end: 0;
right: 0;
top: 50%;
transform: translateY(-50%);
}
<div id="parent">
<p id="child">I should not be moving...</p>
</div>
Как видите, он движется. Итак, мой вопрос: есть ли способ поместить его в середину элемента (по вертикали), но не перемещая его, если контейнер меняет размер - просто с помощью CSS?