Каким образом можно адаптировать размеры родительского и дочернего блоков при применении поворота через свойство transform в CSS таким образом, чтобы границы дочернего блока не выходили за пределы родительского блока и отступы соответствовали исходным значениям при отсутствии применения этого свойства? Код: [ссылка](https://codepen.io/T_Erm/pen/OJYPJpN?editors=1111)
Для того чтобы изменить размер родительского блока в зависимости от угла поворота дочернего блока, можно использовать JavaScript для динамического изменения размеров родителя.
Примерно следующим образом можно адаптировать размеры родительского и дочернего блоков при применении поворота через свойство transform в CSS:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Rotate Example</title>
<style>
.parent {
width: 400px;
height: 400px;
background-color: lightblue;
position: relative;
}
.child {
width: 200px;
height: 200px;
background-color: lightgreen;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) rotate(45deg);
}
</style>
</head>
<body>
<div class="parent">
<div class="child"></div>
</div>
<script>
const parent = document.querySelector(".parent");
const child = document.querySelector(".child");
function updateParentSize() {
const bounds = child.getBoundingClientRect();
parent.style.width = bounds.width + 'px';
parent.style.height = bounds.height + 'px';
}
window.onload = updateParentSize;
window.onresize = updateParentSize;
</script>
</body>
</html>
```
В этом примере JavaScript используется для динамического изменения размеров родителя и его привязка к размерам повернутого дочернего блока. Код JavaScript обновляет размеры родителя при загрузке страницы и при изменении размеров окна браузера.
const rotate = document.querySelector("#rotate"); const container = document.querySelector(".container"); container.style.transform = `rotate(${45}deg)`; rotate.addEventListener('input', (e) => { const degree = +e.target.value; const scaleStep = degree*0.001; const scale = degree === 0 && 1 || degree === 360 && 1 || scaleStep > 1 && 1 || scaleStep < 0.75 && 0.75 || scaleStep; container.style.transform = `scale(${scale}, ${scale}) rotate(${degree}deg)`; });