--- title: Window.getComputedStyle() slug: Web/API/Window/getComputedStyle tags: - API - CSSOM View - Method - Reference - Window - getComputedStyle translation_of: Web/API/Window/getComputedStyle ---
{{APIRef("CSSOM")}}
Window.getComputedStyle()
メソッドは、アクティブなスタイルシートを適用し、それらの値に含まれる可能性のある基本的な計算を解決した後、要素のすべての CSS プロパティの値を含むオブジェクトを返します。個々の CSS プロパティの値は、オブジェクトによって提供される API を介してアクセスするか、CSS プロパティ名でインデックスを作成することでアクセスすることができます。
var style = window.getComputedStyle(element [, pseudoElt]);
element
pseudoElt
{{Optional_Inline}}null
)。返値の style
は、生きた {{DOMxRef("CSSStyleDeclaration")}} オブジェクトで、要素のスタイルが変わると自動で更新されます。
pseudoElt
が妥当な擬似要素セレクターではないか、 {{CSSxRef("::part", "::part()")}} または {{CSSxRef("::slotted", "::slotted()")}} である場合。注: 妥当な擬似要素とは構文的に適切であることを指します。例えば ::unsupported
は擬似要素として対応はありませんが、妥当と判断されます。
この例では、 {{HTMLElement("p")}} の要素のスタイルを設定してから、getComputedStyle()
を使用してそれらのスタイルを取得し、それらを <p>
のテキストコンテンツに出力します。
<p>Hello</p>
p { width: 400px; margin: 0 auto; padding: 20px; font: 2rem/2 sans-serif; text-align: center; background: purple; color: white; }
let para = document.querySelector('p'); let compStyles = window.getComputedStyle(para); para.textContent = 'My computed font-size is ' + compStyles.getPropertyValue('font-size') + ',\nand my computed line-height is ' + compStyles.getPropertyValue('line-height') + '.';
{{EmbedLiveSample('Examples', '100%', '240px')}}
返されるオブジェクトは {{DOMxRef("CSSStyleDeclaration")}} 型で、これは要素の {{DOMxRef("HTMLElement.style", "style")}} プロパティから返されるオブジェクトと同じです。しかし、2つのオブジェクトは異なる目的を持っています。
getComputedStyle
から返されたオブジェクトは読み取り専用で、 <style>
要素や外部スタイルシートで設定されたものも含めて、要素のスタイルを検査するために使用するためのものです。element.style
オブジェクトは、その要素にスタイルを設定したり、 JavaScript の操作やグローバルの style
属性から直接追加されたスタイルを検査したりするために使用するためのものです。最初の引数は {{domxref("Element")}} でなければなりません。要素以外、例えば {{DOMxRef("Text")}} ノードであった場合はエラーが発生します。
多くのコードサンプルでは、 getComputedStyle
は {{DOMxRef("document.defaultView")}} オブジェクトから使用されています。ほとんどの場合、 getComputedStyle
は window
オブジェクト上に存在するので、これは必要ありません。 defaultView
パターンは、 window
のテスト仕様を書きたくない人たちと、 Java でも使える API を作りたくない人たちの組み合わせだったのかもしれません。
getComputedStyle
は擬似要素 (例えば ::after
, ::before
, ::marker
, ::line-marker
— the pseudo-element spec を参照してください) からスタイル情報を取得することができます。
<style> h3::after { content: ' rocks!'; } </style> <h3>Generated content</h3> <script> var h3 = document.querySelector('h3'); var result = getComputedStyle(h3, ':after').content; console.log('the generated content is: ', result); // returns ' rocks!' </script>
border-bottom-width
の値は border-width
や border
などの一括指定プロパティ名ではアクセスできません。 font-size
のような個別指定の名前だけで値を食えりするのが最も安全です。 font
のような一括指定の名前では、ほとんどのブラウザーでは動作しません。getPropertyValue(propName)
API を使用してアクセスすることも、 obj['z-index']
や obj.zIndex
のようにオブジェクトに直接添字を指定してアクセスすることもできます。getComputedStyle
によって返される値は、{{CSSxRef("resolved_value", "解決値", "", 1)}}です。これらの値は通常、CSS 2.1 の{{CSSxRef("computed_value","計算値", "", 1)}}と同じですが、 width
, height
, padding
のような古いプロパティの場合は、{{CSSxRef("used_value","使用値", "", 1)}}と同じになります。もともと CSS 2.0 では、計算値はカスケードと継承後のプロパティの「使用可能な」最終値として定義されていましたが、 CSS 2.1 ではレイアウトする前の値として再定義され、使用値はレイアウト後の値として再定義されています。 CSS 2.0 のプロパティでは、 getComputedStyle
は計算値の古い意味を返しますが、現在は使用値と呼ばれています。レイアウト前の値とレイアウト後の値の違いの例として、 width
や height
のパーセント値の解像度があり、これらは使用値のみ同等のピクセル数に置き換えられます。getComputedStyle
は、 Firefox では元のプロパティ値を返しますが、 WebKit では最終的なプロパティ値を返します。auto
の値を持つプロパティは auto
の値ではなく、使用値を返します。そのため、 top:auto
と bottom:0
を height:30px
の要素に適用し、包含ブロックを height:100px
を適用すると、 Firefox の top
のスタイルの計算値は、 100 − 30 = 70 なので 70px
となります。仕様書 | 状態 | 備考 |
---|---|---|
{{SpecName("CSSOM", "#dom-window-getcomputedstyle", "getComputedStyle()")}} | {{Spec2("CSSOM")}} | |
{{SpecName("DOM2 Style", "#CSS-CSSview-getComputedStyle", "getComputedStyle()")}} | {{Spec2("DOM2 Style")}} | 初回定義 |
{{Compat("api.Window.getComputedStyle")}}