CSS変換でのパーセント値は、翻訳された要素自体のサイズに相対的で、(AFAIK)は親のサイズに関連する他のプロパティに適用されることはよく知られています。これは、たとえば、flexbox
またはgrid
のように、要素を垂直方向に中心に置くために主に使用されています。それは250ピクセルと100ピクセルですので、我々は、left
とtop
プロパティに適用される50%が(top
ため、または高さ).wrapper
の幅の50%を意味する方法を見て、この例ではCSSで変換されたパーセント値が要素自体に関連しているのはなぜですか?
.wrapper {
width: 500px;
height: 200px;
background-color: lightgray;
}
#element {
width: 42px;
height: 42px;
background-color: red;
position: relative;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
<div class="wrapper">
<div id="element"></div>
</div>
、それぞれ、しかしtranslate
の場合は#element
に-50%が適用されるため、42%の50%です。
私はそれの利点を見ていますが、私はこの(明らかな)不整合の理由を理解していません。したがって、
- CSS変換のパーセント値は、他のプロパティでは親のサイズに比例しているのに対し、エレメントの相対的な値はなぜですか?
- 他のプロパティはありますか?
EDIT: SergeS」の回答で述べたように、私はすべてのプロパティが定義によってを持っていることを<percentage>
値のために独自の参照をMDNに参照してください。 transform
で
、
パーセント - バウンディングボックスのサイズを参照してください。
top
において
、
パーセンテージ - 含有ブロックの高さを指します。
margin
において
、
パーセンテージ - 含有ブロックの幅を指します。
私はこれらの定義の理由が不思議です。
translateプロパティは、ブラウザ上のピクセルの再描画を伴わず、ある場所から別の場所に移動しているため、要素に作用します。これの他のプロパティには、私が想定しているすべての変換プロパティが含まれます。 –
ありがとうございます@ ShubhamAgrawal。この*ピクセルを再描画するためのあらゆる情報源を知っていますか? –
[https://developers.google.com/web/fundamentals/performance/rendering/stick-to-compositor-only-properties-and-manage-layer-count] –