Posted in Javascript onSeptember 02, 2009
文件名StyleSheet.js
// CssRule类由StyleSheet.getRule方法返回,不直接创建 function CssRule(rule) { this.rule = rule; this.style = rule.style; this.selectorText = rule.selectorText; this.index = null; } function StyleSheet() { var head = document.getElementsByTagName("head")[0]; //通过新建标签来创建新样式 /* 在此不用document.createStyleSheet来完成,是因为在FF下 如果未导入任何CSS文件的情况下document.createStyleSheet方法失败 */ var style = document.createElement("style"); style.type = "text/css"; head.appendChild(style); this.CatchStyle(document.styleSheets.length - 1); } StyleSheet.prototype = { //可直接捕获现有Style CatchStyle: function(index) { this.style = document.styleSheets[index]; if (navigator.userAgent.indexOf("MSIE") < 0) { //非IE浏览器补丁 this.style.addRule = function(selector, style) { var index = this.cssRules.length; this.insertRule(selector + "{" + style + "}", index); }; this.style.removeRule = function(index) { this.deleteRule(index); }; } }, //新增样式 AddRule: function(selector, style) { this.style.addRule(selector, style); }, //删除样式 RemoveRule: function(index) { this.style.removeRule(index); }, //取得所有样式 getRules: function() { if (this.style.rules) { //IE return this.style.rules; } return this.style.cssRules; //非IE }, //通过选择器,取得样式 getRule: function(selector) { var rules = this.getRules(); for (var i = 0; i < rules.length; i++) { var r = rules[i]; if (r.selectorText == selector) { var rule = new CssRule(r); rule.index = i; return rule; } } return null; } };
调用示例代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="StyleSheet.js" type="text/javascript"></script> <script language="javascript" type="text/javascript"><!-- var ss = new StyleSheet(); window.onload = function() { ss.AddRule(".test", "color:#FF0000; background-color:#F0F0F0; font-size:12px; border:solid 1px #A0A0A0;"); } function Set() { var r = ss.getRule(".test"); var slt = document.getElementById("tbSelector").value; var v = document.getElementById("tbValue").value; var style = r.style; style[slt] = v; } // --></script> </head> <body> 样式<input id="tbSelector" type="text" value="width" /> 值<input id="tbValue" type="text" value="300px" /> <input type="button" value="设置" onclick="Set()" /> <div class="test">a</div> <div class="test">b</div> <div class="test">c</div> <div class="test">d</div> <div class="test">e</div> </body> </html>
动态样式类封装JS代码
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@