动态样式类封装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必须知道的知识。
Jan 09 Javascript
JS 文字符串转换unicode编码函数
May 30 Javascript
实现变速回到顶部的JavaScript代码
May 09 Javascript
日历查询的算法 如何计算某一天是星期几
Dec 12 Javascript
简单实现的JQuery文本框水印插件
Jun 14 Javascript
js制作网站首页图片轮播特效代码
Aug 30 Javascript
AngularJS Toaster使用详解
Feb 24 Javascript
jquery的 filter()方法使用教程
Mar 22 jQuery
详解webpack 热更新优化
Sep 13 Javascript
JS简单判断是否在微信浏览器打开的方法示例
Jan 08 Javascript
JavaScript作用域链实例详解
Jan 21 Javascript
JS面向对象编程——ES6 中class的继承用法详解
Mar 03 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合并数组+与array_merge的区别分析
2010/08/01 PHP
php禁止浏览器使用缓存页面的方法
2014/11/07 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
实例讲解PHP表单
2020/06/10 PHP
JavaScript入门教程 Cookies
2009/01/31 Javascript
js获取图片长和宽度的代码
2009/11/24 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
基于Bootstrap的网页设计实例
2017/03/01 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
基于axios 的responseType类型的设置方法
2019/10/29 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
python str与repr的区别
2013/03/23 Python
名片管理系统python版
2018/01/11 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
Python SQLite3简介
2018/02/22 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
校园新闻广播稿
2014/01/10 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
先进工作者个人总结
2015/02/15 职场文书
酒店开业主持词
2015/07/02 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书