动态样式类封装JS代码


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>
Javascript 相关文章推荐
jquery下操作HTML控件的实现代码
Jan 12 Javascript
javascript下利用arguments实现string.format函数
Aug 24 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
Sep 09 Javascript
一个JavaScript用逗号分割字符串实例
Sep 22 Javascript
Javascript核心读书有感之词法结构
Feb 01 Javascript
简述AngularJS相关的一些编程思想
Jun 23 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
Feb 18 Javascript
NW.js 简介与使用方法
Feb 01 Javascript
实例详解BootStrap的动态模态框及静态模态框
Aug 13 Javascript
深入理解 Koa 框架中间件原理
Oct 18 Javascript
浅析Vue 中的 render 函数
Feb 28 Javascript
完美解决vue 中多个echarts图表自适应的问题
Jul 19 Javascript
JS URL传中文参数引发的乱码问题
Sep 02 #Javascript
FF IE兼容性的修改小结
Sep 02 #Javascript
js 获取浏览器高度和宽度值(多浏览器)
Sep 02 #Javascript
获取URL地址中的文件名和参数的javascript代码
Sep 02 #Javascript
Javascript 判断函数类型完美解决方案
Sep 02 #Javascript
javascript 控制 html元素 显示/隐藏实现代码
Sep 01 #Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
Sep 01 #Javascript
You might like
Smarty模板变量调节器用法分析
2016/05/23 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
vue实现行列转换的一种方法
2019/08/06 Javascript
python文件和目录操作方法大全(含实例)
2014/03/12 Python
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
python复制文件到指定目录的实例
2018/04/27 Python
Django框架实现的分页demo示例
2019/05/25 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
医学院四年学习生活的自我评价
2013/11/06 职场文书
大学生自我鉴定范文
2013/12/28 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
广告创意求职信
2014/03/17 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript