2017-10-17 10 views
3

CSS変換でのパーセント値は、翻訳された要素自体のサイズに相対的で、(AFAIK)は親のサイズに関連する他のプロパティに適用されることはよく知られています。これは、たとえば、flexboxまたはgridのように、要素を垂直方向に中心に置くために主に使用されています。それは250ピクセルと100ピクセルですので、我々は、lefttopプロパティに適用される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%です。

私はそれの利点を見ていますが、私はこの(明らかな)不整合の理由を理解していません。したがって、

  1. CSS変換のパーセント値は、他のプロパティでは親のサイズに比例しているのに対し、エレメントの相対的な値はなぜですか?
  2. 他のプロパティはありますか?

EDIT: SergeS」の回答で述べたように、私はすべてのプロパティが定義によってを持っていることを<percentage>値のために独自の参照をMDNに参照してください。 transform

パーセント - バウンディングボックスのサイズを参照してください。

topにおいて

パーセンテージ - 含有ブロックの高さを指します。

marginにおいて

パーセンテージ - 含有ブロックの幅を指します。

私はこれらの定義の理由が不思議です。

+0

translateプロパティは、ブラウザ上のピクセルの再描画を伴わず、ある場所から別の場所に移動しているため、要素に作用します。これの他のプロパティには、私が想定しているすべての変換プロパティが含まれます。 –

+0

ありがとうございます@ ShubhamAgrawal。この*ピクセルを再描画するためのあらゆる情報源を知っていますか? –

+0

[https://developers.google.com/web/fundamentals/performance/rendering/stick-to-compositor-only-properties-and-manage-layer-count] –

答えて

1
    • 現在の要素を取得し、定義によって翻訳=翻訳。そして、現在の要素を考慮に入れます。
    • 左上、...、その他 - 位置プロパティ - 要素が親要素にどのように配置されているかを定義します。したがって、親要素を親要素絶対に最も近い相対/絶対/固定要素)
    • パディング、マージン、... - とボックスモデル特性をothet - そう再びそれらが
  1. 両方の場合において、NO

+0

ご回答ありがとうございます。定義のために**参照のために要素自体を '翻訳する'は、その動作を説明するかなり良い理由のようです。私は知りたいです*理由* ... –

0

、値が関連している親コンテナに関連している - それらは要素が親要素の内部寸法決めされている方法を定義要素自体に

最初のケースでは、left:50%top:50%と言うときは、相対的に最初に配置された親(デフォルトボディ)からのオフセットを測定することによって、要素を上端から50%オフセットしたままにしておくことを意味します。

2番目のケースでは、translateと言うとき、指定された値でtranslateメソッドによって要素を変換していることを意味します。

+0

あなたの答えをありがとう。私は本当にそれを取得しないと言う必要があります。私は '#element'の複数のプロパティで50%を使用しています。 x軸では 'left'は50%が250pxの値をとりますが、' translate'のx座標では21pxの値を取るので、参照は同じではありません。また、私は、2番目のケースが要素のサイズにどのように影響するかは分かりません... –

関連する問題