ユーザ用ツール

サイト用ツール


javascript:css

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);
        }
    }
};

参考:Safari で CSSStyleSheet オブジェクトを生成する方法 - IT戦記

javascript/css.txt · 最終更新: 2008/01/18 02:15 by 127.0.0.1