====== JavaScriptでCSS操作 ======
===== 動的にCSSを追加するには =====
HTMLエレメントを取得してstyleで設定
var e = document.getElementById("hoge");
e.style.backgroundColor = "#CCCCCC";
===== 複数の要素にまとめて適用させるには =====
CSSStyleSheetを動的に作る
var style = document.createElement("style");
style.setAttribute("type", "text/css");
style.appendChild(document.createTextNode(""));
document.getElementsByTagName("head")[0].appendChild(style);
var sheet = style.sheet;
// sheet.addRule(".clazzName { color: blue; }"); // IE?
sheet.insertRule(".clazzName { color: blue; }", sheet.cssRules.length);
クラス化すると楽かも(要prototype.js)
var DynamicCSS = Class.create();
DynamicCSS.prototype = {
initialize: function() {
var style = document.createElement("style");
style.setAttribute("type", "text/css");
style.appendChild(document.createTextNode(""));
document.getElementsByTagName("head")[0].appendChild(style);
this.sheet = style.sheet;
},
appendRule: function(selector, rules) {
r= new Array();
for (var i in rules) {
if (rules.hasOwnProperty(i)) {
r.push(i + ":" + rules[i]);
}
}
rule = r.join(";");
if (this.sheet.addRule) {
this.sheet.addRule(selector + "{" + rule + ";}");
} else {
this.sheet.insertRule(selector + "{" + rule + ";}", this.sheet.cssRules.length);
}
}
};
参考:[[http://d.hatena.ne.jp/amachang/20070703/1183445387|Safari で CSSStyleSheet オブジェクトを生成する方法 - IT戦記]]