Нет необходимости в математике, просто настройте transform-origin
:
.parent {
border: 1px solid red;
position: relative;
margin-top: 100px;
height: 200px;
}
.child {
border: 1px solid blue;
position: absolute;
width: 100%;
height: 100%;
transform: skewY(-3.5deg);
transform-origin:top right;
}
<div class="parent">
<div class="child">
content
</div>
</div>
Но если вы хотите играть с математикой, точная формула:
top = tan(Xdeg)*(width/2)
зеленый - это top
, фиолетовый - half the width
, а желтый - the angle
с перекосом
В этом случае у нас есть -3.5deg
, поэтому tan(-3.5deg) = -0.061
так что top = -0.061 * 50% of width
НО, так как ссылка на div равна top left
при применении свойства top, нам нужно учитывать знак минус, потому что мы хотим настроить угол top right
, а не top left
one
.parent {
border: 1px solid red;
position: relative;
display:inline-block;
height: 100px;
width:var(--w); /*Used fixed width to make calculation easy*/
}
.child {
border: 1px solid blue;
position: absolute;
width: 100%;
height: 100%;
transform: skewY(-3.5deg);
top:calc(0.061 * (var(--w) / 2));
}
<div class="parent" style="--w:200px;">
<div class="child">
content
</div>
</div>
<div class="parent" style="--w:100px;">
<div class="child">
content
</div>
</div>