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

CSSStyleSheet.insertRule() - ルールを追加する

insertRule()は、CSSStyleSheetのメソッドです。スタイルシートに1つのCSSルールを追加します。

概要

名前
insertRule
所属
CSSStyleSheet
IDL
unsigned long insertRule(CSSOMString rule, optional unsigned long index = 0);

typedef USVString CSSOMString;
仕様書
https://drafts.csswg.org/cssom/#dom-cssstylesheet-insertrule

説明

第1引数(rule)には、CSSルールを表す文字列(例: p{ color: red ; })を指定します。

第2引数(index)には、インデックス番号を指定します。指定すると、このインデックス番号にCSSルールが追加され、そこ以降に元々あったCSSルールは後に1つずつずれます。省略した場合、0を指定した扱いになり、CSSルールは先頭に追加されます。

デモ

CSSStyleSheet.insertRule()のデモです。1つ目のstyle要素のスタイルシートを対象にメソッドを実行します。CSSルールを追加すると、テキスト色が変わるのを確認しましょう。

<!-- このコードは編集できます。 -->

<!DOCTYPE html>
<head>
<style>
	p#hoge { font-weight: 700 ; }
	p#hoge { text-decoration: underline ; }
	p#hoge { border: 1px solid #888 ; }
	p#hoge { background-color: #fffff8 ; }
</style>
<style>
	body { tab-size: 2 ; word-break: break-all ; }
	div#result { white-space: pre-wrap ; }
</style>
</head>
<body>
	<p><button id="insert">[0]にCSSルールを追加</button></p>
	<p><button id="delete">[0]のCSSルールを削除</button></p>
<hr>
	<p id="hoge">SYNCER</p>
<hr>
<div id="result"></div>
<script>
var styleSheetList = document.styleSheets ;
var styleSheet = styleSheetList[0] ;

document.getElementById( "insert" ).onclick = function () {
	styleSheet.insertRule( "p#hoge{ color: red ; }" ) ;
	getCSSInfo() ;
}

document.getElementById( "delete" ).onclick = function () {
	styleSheet.deleteRule( 0 ) ;
	getCSSInfo() ;
}

function getCSSInfo () {
	document.getElementById( "result" ).textContent = "" ;

	console.log( styleSheet ) ;
	appendText( styleSheet + "\n" ) ;

	var cssRuleList = styleSheet.cssRules ;
	appendText( "cssRules: " + cssRuleList + "\n" ) ;

	for( var ii=0,ll=cssRuleList.length; ll>ii; ii++ ) {
		var cssRule = cssRuleList[ii] ;
		appendText( "\t" + "[" + ii + "]" + cssRule + "\n" ) ;
		appendText( "\t\t" + "type: " + cssRule.type + "\n" ) ;
		appendText( "\t\t" + "cssText: " + cssRule.cssText + "\n" ) ;
		appendText( "\t\t" + "parentRule: " + cssRule.parentRule + "\n" ) ;
		appendText( "\t\t" + "parentStyleSheet: " + cssRule.parentStyleSheet + "\n" ) ;
	}

	appendText( "\n" ) ;
}

function appendText ( text ) {
	document.getElementById( "result" ).appendChild( document.createTextNode( text ) ) ;
}

getCSSInfo() ;
</script>
</body>
</html>

サポート状況

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