可能比CSS更多的数学,但我正在尝试确定一种在应用CSS skewY变换后调整div定位的方法。
在下面的代码段中,带有蓝色边框的div应用了3.5deg skewY,我想知道是否有数学方法可以知道应用于蓝色div的top
多少无论两个div的宽度如何,右上角始终与div的右上角完美对齐,并带有红色边框。
我使用%
和vw
玩过数字,但我正在寻找一个可靠的基于数学的解决方案。
.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);
}
<div class="parent">
<div class="child">
content
</div>
</div>
答案 0 :(得分:5)
无需数学,只需调整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;
}
&#13;
<div class="parent">
<div class="child">
content
</div>
</div>
&#13;
但如果你想玩数学,确切的公式是:
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 right
角,而不是top left
一角
.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));
}
&#13;
<div class="parent" style="--w:200px;">
<div class="child">
content
</div>
</div>
<div class="parent" style="--w:100px;">
<div class="child">
content
</div>
</div>
&#13;