动态样式类封装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 相关文章推荐
dwr spring的集成实现代码
Mar 22 Javascript
asp.net中System.Timers.Timer的使用方法
Mar 20 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
Feb 04 Javascript
javascript学习笔记之10个原生技巧
May 21 Javascript
javascript委托(Delegate)blur和focus用法实例分析
May 26 Javascript
js实现添加删除表格(两种方法)
Apr 27 Javascript
单行 JS 实现移动端金钱格式的输入规则
May 22 Javascript
js获取文件里面的所有文件名(实例)
Oct 17 Javascript
在Vue中使用highCharts绘制3d饼图的方法
Feb 08 Javascript
Vuejs 单文件组件实例详解
Feb 09 Javascript
详解webpack运行Babel教程
Jun 13 Javascript
vue.js封装switch开关组件的操作
Oct 26 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
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
jqPlot Option配置对象详解
2009/07/25 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
python持久性管理pickle模块详细介绍
2015/02/18 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
详细分析Python垃圾回收机制
2020/07/01 Python
python3中数组逆序输出方法
2020/12/01 Python
2013的个人自我评价
2013/12/26 职场文书
给女儿的表扬信
2014/01/18 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
募捐倡议书
2014/04/14 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
学习经验交流会总结
2015/11/02 职场文书
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python