StyleSheet.parentStyleSheet - 親のスタイルシート
parentStyleSheetは、StyleSheetのプロパティです。親のスタイルシートを返します。ここでいう親のスタイルシートとは、@importで読み込まれたスタイルシートから見た、読み込んだ元のスタイルシートのことです。
概要
- 名前
- parentStyleSheet
- 所属
- StyleSheet
- IDL
readonly attribute StyleSheet? parentStyleSheet;
- 仕様書
- https://drafts.csswg.org/cssom/#dom-stylesheet-parentstylesheet
説明
親のスタイルシートを返す。存在しない場合はnullを返す。
チュートリアル
親のスタイルシートが存在するケースを説明します。親子関係は、@importで読み込んだ側が親で、読み込まれた側が子と考えます。
<style>
@import url( ./style.css ) ;
</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.parentStyleSheet ; // 親のスタイルシート (styleCSSと同じ)
デモ
StyleSheet.parentStyleSheetのデモです。@importで読み込まれたStyleSheetのプロパティ値を参照しています。読み込んだ元であるstyle要素(#hoge)のスタイルシートがその値になっています。
<!-- このコードは編集できます。 -->
<!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 ;
appendText( "StyleSheetList[" + i + "]: " + styleSheet + "\n" ) ;
appendText( "\t" + "type: " + styleSheet.type + "\n" ) ;
appendText( "\t" + "href: " + styleSheet.href + "\n" ) ;
appendText( "\t" + "ownerNode: " + styleSheet.ownerNode + "\n" ) ;
appendText( "\t" + "parentStyleSheet: " + styleSheet.parentStyleSheet + "\n" ) ;
appendText( "\t" + "title: " + styleSheet.title + "\n" ) ;
appendText( "\t" + "media: " + styleSheet.media + "\n" ) ;
appendText( "\t" + "disabled: " + styleSheet.disabled + "\n" ) ;
var cssRules = styleSheet.cssRules ;
if ( cssRules ) {
for( var ii=0,ll=cssRules.length; ll>ii; ii++ ) {
appendText( "\t" + "cssRules[" + ii + "]: " + cssRules[ii].cssText + "\n" ) ;
}
}
appendText( "\n" ) ;
break ;
}
function appendText ( text ) {
document.getElementById( "result" ).appendChild( document.createTextNode( text ) ) ;
}
</script>
</body>
</html>
サポート状況
Chrome | Firefox | Safari | Edge | IE | Opera | iOS Safari | Android |
---|---|---|---|---|---|---|---|
● | ● | ● | ● | ● | ● | ● | ● |
関連記事
- StyleSheet.disabled
- disabledは、StyleSheetのプロパティです。このプロパティにtrueを代入すると、そのスタイルシートが無効になります。
- StyleSheet.title
- titleは、StyleSheetのプロパティです。スタイルシートのタイトルを返します。タイトルは、link要素のtitle属性で設定できます。
- StyleSheet.href
- hrefは、StyleSheetのプロパティです。外部ファイルのスタイルシートのアドレスを返します。
- StyleSheet.ownerNode
- ownerNodeは、StyleSheetのプロパティです。スタイルシートの主たるノードを返します。主にstyle要素、またはlink要素です。