La valeur de la propriété raccourcie d'arrière-plan ne se développe pas correctement lors de la tentative d'appel de HTMLElement.style
P粉269530053
2023-09-03 21:10:48
<p>Dans le style de l'élément, j'ai quelques déclarations CSS en ligne, y compris une déclaration abrégée pour l'arrière-plan</p>
<pre class="brush:php;toolbar:false;"><style>
:racine{
--bg-blanc : rgba(255, 255, 255, 0) ;
}
</style>
<div style="arrière-plan : var(--bg-white); ... "></div></pre>
<p>Mais lors d'une itération sur HTMLElement.style, les propriétés abrégées semblent mal développées</p>
<pre class="brush:php;toolbar:false;">for (déclaration const de Array.from(target.style)) {
valeur const = target.style.getPropertyValue (déclaration)
console.log(`${déclaration} : ${valeur}`)
}</pré>
<p>Cela devrait imprimer <code>background-color: var(--bg-white)</code> selon la documentation HTMLElement.style sur MDN, mais j'obtiens <code>background-color : ' '</code>
<blockquote>
<p>Propriétés étendues des abréviations. Si vous définissez style="border-top: 1px Solid black", les propriétés normales (border-top-color, border-top-style et border-top-width) sont définies. </p>
</blockquote>
<p> Quelqu'un a-t-il rencontré cette situation ? </p>
Problème d'utilisation de l'itérateur par défaut de
Array.from(target.style)
获取target.style
. Il n'inclut pas les propriétés d'arrière-plan. Selon la spécification, les propriétés abrégées ont été étendues à ses différentes parties.Tout est expliqué dans le code.
Merci à @t.niese pour le conseil dans les commentaires.
Si vous utilisez l'attribut
HTMLElement.style
,它将返回通过style
pour l'appliquer directement (au lieu de le calculer).Dans ce cas, le navigateur n'a aucun moyen de savoir où se trouve l'instruction
background: var(--bg-white);
中的var(...)
将解析什么并它将包含哪些background-...
属性(变量的内容将放置在var(...)
et la valeur résultante sera alors analysée.Donc, si vous avez par exemple
--bg-white: content-box Radial-gradient(crimson, skyblue);
那么你的--bg-white
, cela affectera en fait plusieurs propriétés.