Я хочу, чтобы дочерний элемент можно было масштабировать и центрировать. Если вы измените масштаб дочернего элемента на 200%, вы увидите, что верх элемента фиолетовый, но вы не можете увеличить масштаб. Как я могу это исправить? Я думаю, это потому, что верхняя маржа ниже нуля.
Масштаб 100%:
#child {
background-image: linear-gradient(red, violet, yellow, green, pink);
width:50px;
height:400px;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
zoom: 100%;
}
#parent {
background-color:blue;
width:500px;
height:500px;
position: relative;
transform: scale();
overflow: auto;
}<div id = "parent">
<div id = "child"></div>
</div>Масштаб 200%:
#child {
background-image: linear-gradient(red, violet, yellow, green, pink);
width:50px;
height:400px;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
zoom: 200%;
}
#parent {
background-color:blue;
width:500px;
height:500px;
position: relative;
transform: scale();
overflow: auto;
}<div id = "parent">
<div id = "child"></div>
</div>





Поскольку высота #child выражена в пикселях, функция масштабирования увеличивает количество пикселей. Если вы используете height: ..%, процент высоты будет масштабироваться на вашем zoom.
Решил это, добавив 'display: flex; align-items: center;' к родительскому и удалив абсолютную позицию (включая позиции)
#child {
background-image: linear-gradient(red, violet, yellow, green, pink);
width: 50px;
height: 400px;
margin: auto;
zoom: 200%;
}
#parent {
background-color:blue;
width: 500px;
height: 500px;
overflow: auto;
display: flex;
align-items: center;
}<div id = "parent">
<div id = "child"></div>
</div>
Тогда высота останется на ..%, масштаб не будет увеличиваться.