Window: getDefaultComputedStyle() 方法

非標準:此特性未標準化。我們不建議在生產環境中使用非標準特性,因為它們瀏覽器支援有限,並且可能會更改或被移除。但是,在沒有標準選項的特定情況下,它們可以是合適的替代方案。

getDefaultComputedStyle() 方法可獲取元素所有 CSS 屬性的預設 計算值,會忽略作者樣式。也就是說,只考慮使用者代理樣式和使用者樣式。

語法

js
getDefaultComputedStyle(element)
getDefaultComputedStyle(element, pseudoElt)

引數

element

用於獲取計算樣式的 Element

pseudoElt 可選

指定要匹配的偽元素的字串。對於常規元素,必須為 null(或未指定)。

返回值

返回的 style 是一個 CSSStyleDeclaration 物件。該物件與 Window.getComputedStyle() 返回的物件型別相同,但僅考慮使用者代理和使用者規則。

示例

簡單示例

js
const elem = document.getElementById("elemId");
const style = getDefaultComputedStyle(elem);

更長的示例

html
<div id="elem-container">dummy</div>
<div id="output"></div>
css
#elem-container {
  position: absolute;
  left: 100px;
  top: 200px;
  height: 100px;
}
js
const elem = document.getElementById("elem-container");
const theCSSprop = getDefaultComputedStyle(elem).position;
document.getElementById("output").textContent = theCSSprop; // outputs "static"

與偽元素一起使用

getDefaultComputedStyle() 方法可以從偽元素(例如 ::before::after)獲取樣式資訊。

html
<h3>generated content</h3>
css
h3::after {
  content: " rocks!";
}
js
const h3 = document.querySelector("h3");
const result = getDefaultComputedStyle(h3, "::after").content;

console.log("the generated content is: ", result); // returns 'none'

注意

在某些已知情況下,返回的值可能是故意不準確的。特別是為了避免所謂的 CSS 歷史記錄洩露安全問題,瀏覽器可能會明確“欺騙”連結的實際使用值,並始終返回使用者從未訪問過該連結網站時的值,以及/或限制可以使用 :visited 偽選擇器應用的樣式。有關這些實現方式的詳細資訊,請參閱 https://blog.mozilla.org/security/2010/03/31/plugging-the-css-history-leak/https://hacks.mozilla.org/2010/03/privacy-related-changes-coming-to-css-vistited/

規範

已提交給 CSS 工作組。

瀏覽器相容性