SVGElement: attributeStyleMap プロパティ

attributeStyleMapSVGElement インターフェイスの読み取り専用のプロパティで、生きた StylePropertyMap を返します。これには、要素のインライン スタイル属性で定義されているか、スクリプト経由で SVGElement インターフェイスの style プロパティを使用して割り当てられた、要素のスタイルプロパティのリストが入ります。

一括指定プロパティは展開されます。border-top: 1px solid black を設定すると、代わりに個別指定プロパティ (border-top-color, border-top-style, border-top-width) が設定されます。

style プロパティと attributeStyleMap プロパティの主な違いは、style プロパティが CSSStyleDeclaration オブジェクトを返すのに対し、attributeStyleMap プロパティは StylePropertyMap オブジェクトを返すことです。

このプロパティ自身は書き込みできませんが、style プロパティを通じて返す CSSStyleDeclaration オブジェクトと同様に、このプロパティが返す StylePropertyMap オブジェクトを通じてインラインスタイルを読み書きすることができます。

生きた StylePropertyMap オブジェクトです。

次のコードは style 属性と attributeStyleMap プロパティの関係を示しています。

html
<div style="white-space: pre-line;">
  <svg
    width="50"
    height="50"
    xmlns="http://www.w3.org/2000/svg"
    viewBox="0 0 250 250"
    width="250"
    height="250"
    style="white-space: pre-line;">
    <circle
      cx="100"
      cy="100"
      r="50"
      id="el"
      style="border-top: 1px solid blue; color: red;" />
  </svg>
  <div id="output"></div>
</div>
css
#el {
  font-size: 16px;
}
js
const element = document.getElementById("el");
const output = document.getElementById("output");

for (const property of element.attributeStyleMap) {
  output.textContent += `${property[0]} = ${property[1][0].toString()}\n`;
}

仕様書

Specification
CSS Typed OM Level 1
# dom-elementcssinlinestyle-attributestylemap

ブラウザーの互換性

BCD tables only load in the browser

関連情報