CSSStyleSheet.ownerRule - オーナーのルール
ownerRuleは、CSSStyleSheetのプロパティです。自身のオーナーであるCSSルールを返します。ここでいうオーナーとは、自身を@importで呼び出しているCSSルールのことです。
概要
- 名前
- ownerRule
- 所属
- CSSStyleSheet
- IDL
readonly attribute CSSRule? ownerRule;
- 仕様書
- https://drafts.csswg.org/cssom/#dom-cssstylesheet-ownerrule
説明
自身のオーナーであるCSSルールをCSSRuleで返す。
チュートリアル
オーナールールが存在するケースを説明します。@importで読み込んだ側が、読み込まれた側から見たオーナールールとなります。
<style>
@import url( ./style.css ) ; // CSSRule
</style>
var styleSheetList = document.styleSheets ;
var styleCSS = styleSheetList[0] ; // <style>...</style>のスタイルシート (CSSStyleSheet)
var importRule = styleCSS.cssRules[0] ; // @import url( ./style.css )
var importCSS = importRule.styleSheet ; // @importで読み込まれたスタイルシート (CSSStyleSheet)
var importCSS.ownerRule ; // 自身のオーナールール (importRuleと同じ)
デモ
CSSStyleSheet.ownerRuleのデモです。@importで読み込まれたStyleSheetのプロパティ値を参照しています。読み込んだ元である@importのCSSルールがその値になっています。
<!-- このコードは編集できます。 -->
<!DOCTYPE html>
<head>
<style id="hoge">
@import url( ./demo.css ) ;
body { tab-size: 2 ; word-break: break-all ; }
p { color: purple ; }
div#result { white-space: pre-wrap ; }
</style>
</head>
<body>
<p>SYNCER</p>
<hr>
<div id="result"></div>
<script>
var styleSheetList = document.styleSheets ;
for( var i=0,l=styleSheetList.length; l>i; i++ ) {
if ( styleSheetList[i].ownerNode.id !== "hoge" ) continue ;
var styleSheet = styleSheetList[i].cssRules[0].styleSheet ;
var cssRule = styleSheet.ownerRule ;
console.log( cssRule ) ;
appendText( cssRule + "\n" ) ;
appendText( "\t" + "type: " + cssRule.type + "\n" ) ;
appendText( "\t" + "cssText: " + cssRule.cssText + "\n" ) ;
appendText( "\t" + "parentRule: " + cssRule.parentRule + "\n" ) ;
appendText( "\t" + "parentStyleSheet: " + cssRule.parentStyleSheet + "\n" ) ;
appendText( "\n" ) ;
}
function appendText ( text ) {
document.getElementById( "result" ).appendChild( document.createTextNode( text ) ) ;
}
</script>
</body>
</html>
サポート状況
Chrome | Firefox | Safari | Edge | IE | Opera | iOS Safari | Android |
---|---|---|---|---|---|---|---|
● | ● | ● | ● | ● | ● | ● | ● |
関連記事
- CSSStyleSheet.cssRules
- cssRulesは、CSSStyleSheetのプロパティです。スタイルシートが含む全てのCSSルールをCSSRuleListで返します。
- CSSStyleSheet.deleteRule()
- deleteRule()は、CSSStyleSheetのメソッドです。スタイルシートのCSSルールを1つ削除します。
- CSSStyleSheet.insertRule()
- insertRule()は、CSSStyleSheetのメソッドです。スタイルシートに1つのCSSルールを追加します。
- CSSImportRule.styleSheet
- styleSheetは、CSSImportRuleのプロパティです。@importが読み込んでいるスタイルシートを返します。