Вы не можете предотвратить масштабирование дочерних элементов, если примените transform
к своему wrapper
.
⋅ ⋅ ⋅
Но вы можете использовать переменную CSS длясохраните свой масштабный коэффициент, а затем используйте calc
для расчета (лучше, чем делать это вручную) и примените обратную шкалу для дочерних элементов:
.wrapper {
padding: 0 20px;
transform: scale(var(--scale));
background: #ddd;
}
.wrapper > * {
transform: scale(calc(1/var(--scale)));
}
<div class="wrapper" style="--scale: 1">
<h2>title</h2>
<p>description</p>
</div>
<div class="wrapper" style="--scale: 1.2">
<h2>title</h2>
<p>description</p>
</div>
<div class="wrapper" style="--scale: 0.8">
<h2>title</h2>
<p>description</p>
</div>
⋅ ⋅ ⋅
Другой способ сделать это - стилизовать и масштабировать вашу обертку как псевдоэлемент.Таким образом, внутри псевдоэлемента нет элемента, поэтому ничего не масштабируется:
.wrapper {
position: relative;
padding: 0 20px;
}
.wrapper::before {
content: "";
z-index: -1;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
transform: scale(var(--scale));
background: #ddd;
}
<div class="wrapper" style="--scale: 1">
<h2>title</h2>
<p>description</p>
</div>
<div class="wrapper" style="--scale: 1.2">
<h2>title</h2>
<p>description</p>
</div>
<div class="wrapper" style="--scale: 0.8">
<h2>title</h2>
<p>description</p>
</div>