动态样式类封装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 相关文章推荐
贴一个在Mozilla中常用的Javascript代码
Jan 09 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
May 07 Javascript
基于jquery的无限级联下拉框js插件
Oct 29 Javascript
IE下双击checkbox反应延迟问题的解决方法
Mar 27 Javascript
JavaScript实现添加、查找、删除元素
Jul 02 Javascript
详解jQuery中的deferred对象的使用(一)
May 27 Javascript
AngularJS基础 ng-include 指令示例讲解
Aug 01 Javascript
Bootstrap栅格系统的使用和理解2
Dec 14 Javascript
性能优化篇之Webpack构建速度优化的建议
Apr 03 Javascript
小程序实现新用户判断并跳转激活的方法
May 20 Javascript
用vue设计一个日历表
Dec 03 Vue.js
javascript实现滚轮轮播图片
Dec 13 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的栏目导航程序
2006/10/09 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
Javascript中的常见排序算法
2007/03/27 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
详解django中自定义标签和过滤器
2017/07/03 Python
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
基于python指定包的安装路径方法
2018/10/27 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
next在python中返回迭代器的实例方法
2020/12/15 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
骆驼官方商城:CAMEL
2016/11/22 全球购物
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
销售员求职个人的自我评价
2014/02/19 职场文书
个人承诺书
2014/03/26 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
树转促学习心得体会
2014/09/10 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
股东协议书范本2016
2016/03/21 职场文书
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
python 单机五子棋对战游戏
2022/04/28 Python