HTMLElement.style を呼び出そうとすると、背景短縮プロパティの値が正しく展開されません。
P粉269530053
2023-09-03 21:10:48
<p>要素のスタイルには、背景の短縮宣言を含むいくつかのインライン CSS 宣言があります</p>
<pre class="brush:php;toolbar:false;"><style>
:根{
--bg-white: rgba(255, 255, 255, 0);
}
</スタイル>
<div style="background: var(--bg-white); ... "></div></pre>
<p>しかし、HTMLElement.style を反復処理すると、短縮プロパティが誤って展開されているように見えます</p>
<pre class="brush:php;toolbar:false;">for (Array.from(target.style) の const 宣言) {
const 値 = target.style.getPropertyValue(宣言)
console.log(`${宣言}: ${値}`)
}</pre>
<p>これにより、MDN の HTMLElement.style ドキュメントに従って <code>background-color: var(--bg-white)</code> が出力されるはずですが、<code>background-color: が表示されます。 ' '</code> </p>
<ブロック引用>
<p>展開された略語プロパティ。 style="border-top: 1px Solid black" が設定されている場合、通常のプロパティ (border-top-color、border-top-style、border-top-width) が設定されます。 </p>
</blockquote>
<p>この状況に遭遇した人はいますか? </p>
Array.from(target.style)
を使用してtarget.style
のデフォルトのイテレータを取得する際に問題が発生しました。背景プロパティは含まれません。仕様によれば、速記プロパティはそのさまざまな部分に拡張されています。すべてはコードで説明されています。
コメントでヒントをくれた @t.niese に感謝します。
HTMLElement.style
を使用すると、style
属性を介して (計算ではなく) 直接適用されたものが返されます。この場合、ブラウザはバックグラウンドの
したがって、たとえばvar(...)
が何を解析するのか、var(--bg-white);が何を解析するのかを知る方法がありません。
background-...プロパティが含まれます (変数の内容は
var(...)ステートメントがある場所に配置され、結果の値が解析されます。
--bg-white: content-box Radial-gradient(crimson, skyblue);
がある場合、
--bg-whiteは実際には Multiple に影響します。プロパティ。