IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

IE8 に実装された getCascatedCSSSelectors 関数とは何か

4 月 1 日ですね!

getCascadedCSSSelectors 関数とは

getCascadedCSSSelectors 関数とは、 HTML54-1. the default views 定義されているインタフェースで、要素にあたっている CSS セレクタ配列で取得するための関数です。
window オブジェクト(グローバルオブジェクト)が持っている関数なので普通に、以下のように呼び出すことができます。

var element = document.getElementById('main-content');
var selectors = getCascadedCSSSelectors(element);

alert(selectors[0]); // #main-content
alert(selectors[1]); // div.section
alert(selectors[2]); // div
alert(selectors[3]); // *

たとえば、この例の場合は 4 つの計四つの CSS セレクタがあたっていることが分かります。

カスケード順とは何か

複数の CSS のルールが要素にあたっている場合に、優先される順のことをカスケード順と言います。

!important 宣言の扱い

一つのセレクタが示すルール内に !important 宣言を含むプロパティと !important 宣言を含まないプロパティが存在する場合、 getCascadedCSSSelectors の結果に同じセレクタが二つ含まれることになります。
たとえば、以下のような場合は

#hoge {
 font-size: 2em;
}
* {
 color: red;
 background: red !important;
}

結果は以下のようになります。

var element = document.getElementById('hoge');
var selectors = getCascadedCSSSelectors(element);

alert(selectors); // ['*', '#hoge', '*']

まとめ

getCascadedCSSSelectors 便利すぎる!
みなさんも触ってみてはいかがでしょうか。