Heim > Fragen und Antworten > Hauptteil
In JavaScript können Sie getPropertyValue(property)
获取 CSS 变量的值。此函数对于检索 :root
in Blöcken deklarierte Variablen verwenden, um nützlich zu sein.
:root { --example-var: 50px; }
Aber das gilt auch, wenn dieser Variablenausdruck so etwas wie calc
的函数,则 getPropertyValue
调用将以文本形式返回表达式而不是计算它,即使使用 getCompulatedStyle
enthält.
:root { --example-var: calc(100px - 5px); }
Wie erhalte ich den berechneten Wert einer CSS-Variablen mithilfe von CSS-Funktionen wie calc
?
Siehe Beispiel unten:
let div = document.getElementById('example'); console.log(window.getComputedStyle(div).getPropertyValue('--example-var'))
:root { --example-var: calc(100px - 5px); }
<div id='example'></div>
P粉9365096352023-10-26 00:55:18
一种奇怪的方法是添加
:root {
--example-var: calc(100px - 5px);
}
#var-calculator {
// can be fetched through .getBoundingClientRect().width
width: var(--example-var);
// rest of these just to make sure this element
// does not interfere with your page design.
opacity: 0;
position: fixed;
z-index: -1000;
}
<custom-element>
<div id="var-calculator"></div>
</custom-element>
const width = document.getElementById('var-calculator').getBoundingClientRect().width
我不知道这是否适用于您的用例,但我刚刚测试过它并且它有效。
P粉8385635232023-10-26 00:31:35
从技术上讲,您不能,因为计算值不是静态的,并且将取决于其他属性。在这种情况下,这很简单,因为我们正在处理像素值,但想象一下您将拥有百分比值的情况。百分比是相对于其他属性而言的,因此在与 var()
一起使用之前我们无法计算它。如果我们使用 em
、ch
等单位,则逻辑相同
下面是一个简单的例子来说明:
let div = document.getElementById('example'); console.log(window.getComputedStyle(div).getPropertyValue('--example-var')) console.log(window.getComputedStyle(div).getPropertyValue('font-size')) console.log(window.getComputedStyle(div).getPropertyValue('width')) console.log(window.getComputedStyle(div).getPropertyValue('background-size'));
:root { --example-var: calc(100% + 5px - 10px); } #example { font-size:var(--example-var); width:var(--example-var); background-size:var(--example-var); }
<div id='example'>some text</div>