动态样式类封装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 相关文章推荐
用js实现多域名不同文件的调用方法
Jan 12 Javascript
js中同步与异步处理的方法和区别总结
Dec 25 Javascript
招聘网站基于jQuery实现自动刷新简历
May 10 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
Jun 01 Javascript
pc加载更多功能和移动端下拉刷新加载数据
Nov 07 Javascript
AngularJS指令与指令之间的交互功能示例
Dec 14 Javascript
canvas雪花效果核心代码分享
Feb 19 Javascript
jquery一键控制checkbox全选、反选或全不选
Oct 16 jQuery
jQuery实现的老虎机跑动效果示例
Dec 29 jQuery
vue中的mvvm模式讲解
Jan 31 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
Aug 07 Javascript
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
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入门速成(2)
2006/10/09 PHP
福利彩票幸运号码自动生成器
2006/10/09 PHP
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
webpack4简单入门实例
2018/09/06 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
python调用cmd复制文件代码分享
2013/12/27 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
浅谈Django中的QueryDict元素为数组的坑
2020/03/31 Python
python中random模块详解
2021/03/01 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
怎样写好自我鉴定
2013/12/04 职场文书
好学生评语大全
2014/05/05 职场文书
公司投资建议书
2014/05/16 职场文书
小学社会实践活动总结
2014/07/03 职场文书
辞职信的写法
2015/02/27 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
简历自我评价模板
2015/03/11 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
win7配置本地ftp服务器的图文教程
2022/08/05 Servers