注:質問が出されてから、世界は進んでいます。宣言、カスケード、指定、計算、解決、使用、実際の値のレイヤーが以前よりも多くなりました。解決された値getComputedStyle
を返します(プロパティに応じて計算または使用されます)。レイヤーは次のとおりです。
CSSカスケードおよび継承レベル4から:
ユーザーエージェントがドキュメントを解析してドキュメントツリーを構築したら、ツリー内のすべての要素に、それに対応してフォーマット構造内のすべてのボックスに、ターゲットメディアタイプに適用されるすべてのプロパティに値を割り当てる必要があります。
特定の要素またはボックスのCSSプロパティの最終的な値は、複数ステップの計算の結果です。
- 最初に、要素に適用されたすべての宣言された値が、各要素の各プロパティについて収集されます。要素に適用される宣言された値はゼロまたは多数ある可能性があります。
- カスケードすると、カスケード値が生成されます。要素ごとのプロパティごとに最大で1つのカスケード値があります。
- デフォルトでは、指定された値が生成されます。すべての要素には、プロパティごとに1つの指定された値があります。
- 値の依存関係を解決すると、計算された値が生成されます。すべての要素には、プロパティごとに1つの計算値があります。
- ドキュメントをフォーマットすると、使用された値が得られます。そのプロパティが要素に適用される場合、要素は特定のプロパティに使用される値のみを持ちます。
- 最後に、使用された値は、表示環境の制約に基づいて実際の値に変換されます。使用される値と同様に、要素の特定のプロパティには実際の値がある場合とない場合があります。
次に、CSSオブジェクトモデルは解決された値を定義します。
getComputedStyle()
歴史的には、要素または疑似要素の「計算値」を返すように定義されていました。ただし、「計算値」の概念はCSSのリビジョン間で変更されgetComputedStyle()
ましたが、デプロイされたスクリプトとの互換性のためにの実装は同じままである必要がありました。この問題に対処するために、この仕様では解決された値の概念が導入されています。
特定のロングハンドプロパティの解決された値は、次のように決定できます。
...その後に、解決された値が計算された値であるか使用された値であるかを示すプロパティ(特定のプロパティとカテゴリ)のリストが続きます。
その背景で:
getComputedStyle
最新のすべての主要なブラウザで動作します。IEの以前のバージョンは、の形式でほぼ同等のものを提供しcurrentStyle
ます。
getComputedStyle
解決された値を返します。これは、任意のプロパティに対して計算値または使用値のいずれかであり、CSSOM仕様では、どのプロパティがどの種類の値でどのような状況で返されるかを明確に定義しています。CSSC&I4またはCSSOMには、解決された値が使用値ではない場合に使用値にアクセスする方法、または実際の値にアクセスする方法を定義するものは何もありません。gsneddersは、ワーキンググループに確認して確認したと言っています。少なくともまだ、使用済みの値を取得する方法はありません。
解決された値は、おそらく必要なものには十分です。たとえば、次の例は207.5px
、ではなく、または同様のものを示してい50%
ます。これは解決された値であり、この特定の場合に使用される値でもありますが( isではないwidth
要素で使用したため)、この場合、サブピクセルレンダリングが実行可能で適切かどうかによっては、実際の値ではない可能性があります。display
none
contents
(function() {
var target = document.getElementById("target");
var style = window.getComputedStyle(target);
display("computed width = " + style.width);
function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}
})();
<div id="target" style="display: inline-block; width: 50%">x</div>