SYNCERのロゴ
アイキャッチ画像

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>

サポート状況

ChromeFirefoxSafariEdgeIEOperaiOS SafariAndroid
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年10月15日 (日)
コンテンツを公開しました。