Nilai sifat trengkas latar belakang berkembang secara tidak betul apabila cuba memanggil HTMLElement.style
P粉269530053
2023-09-03 21:10:48
<p>Dalam gaya elemen, saya mempunyai beberapa pengisytiharan CSS sebaris, termasuk pengisytiharan singkatan untuk latar belakang</p>
<pre class="brush:php;toolbar:false;"><style>
:root{
--bg-white: rgba(255, 255, 255, 0);
}
</style>
<div style="latar belakang: var(--bg-white);
<p>Tetapi apabila melelakan ke atas HTMLElement.style, sifat trengkas kelihatan seperti ia tidak dikembangkan dengan betul</p>
<pre class="brush:php;toolbar:false;">for (pengisytiharan const Array.from(target.style)) {
nilai const = target.style.getPropertyValue(deklarasi)
console.log(`${deklarasi}: ${value}`)
}</pre>
<p>Ini sepatutnya mencetak <code>background-color: var(--bg-white)</code> mengikut dokumentasi HTMLElement.style pada MDN, tetapi saya mendapat <code>background-color: ' '</kod>
<blockquote>
<p>Sifat singkatan dikembangkan. Jika anda menetapkan style="border-top: 1px Solid black", sifat biasa (border-top-color, border-top-style dan border-top-width) akan ditetapkan. </p>
</blockquote>
<p>Adakah sesiapa yang menghadapi situasi ini? </p>
Masalah menggunakan lelaran lalai
Array.from(target.style)
获取target.style
. Ia tidak termasuk sifat latar belakang. Mengikut spesifikasi, sifat trengkas telah diperluaskan ke pelbagai bahagiannya.Semuanya diterangkan dalam kod.
Terima kasih kepada @t.niese atas petua dalam komen.
Jika anda menggunakan atribut
HTMLElement.style
,它将返回通过style
untuk menerapkannya secara langsung (bukannya mengiranya).Dalam kes ini, penyemak imbas tidak mempunyai cara untuk mengetahui di mana pernyataan
background: var(--bg-white);
中的var(...)
将解析什么并它将包含哪些background-...
属性(变量的内容将放置在var(...)
itu dan kemudian nilai yang terhasil akan dihuraikan.Jadi jika anda sebagai contoh mempunyai
--bg-white: content-box Radial-gradient(crimson, skyblue);
那么你的--bg-white
ia sebenarnya akan menjejaskan beberapa sifat.