动态样式类封装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 相关文章推荐
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
Sep 26 Javascript
jquery CSS选择器笔记
Mar 29 Javascript
jquery实现叠层3D文字特效代码分享
Aug 21 Javascript
学习JavaScript设计模式(接口)
Nov 26 Javascript
jquery限定文本框只能输入数字(整数和小数)
Jan 08 Javascript
jQuery插件实现文字无缝向上滚动效果代码
Feb 25 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
May 31 Javascript
JS实现iframe自适应高度的方法示例
Jan 07 Javascript
微信小程序 Toast自定义实例详解
Jan 20 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
Jun 17 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
Apr 24 Javascript
vue 解决form表单提交但不跳转页面的问题
Oct 30 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
浅谈PHP中的
2016/04/23 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
基于jQuery的弹出框插件
2012/03/18 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
[06:45]2018DOTA2亚洲邀请赛 4.5 SOLO赛 Sccc vs Maybe
2018/04/06 DOTA
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
Python Web服务器Tornado使用小结
2014/05/06 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
python图像处理之镜像实现方法
2015/05/30 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
django加载本地html的方法
2018/05/27 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
python字符串Intern机制详解
2019/07/01 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
行政经理的岗位职责
2013/11/23 职场文书
自荐信格式简述
2014/01/25 职场文书
幼儿园教育教学反思
2014/01/31 职场文书
七一讲话心得体会
2014/09/05 职场文书
家庭经济困难证明
2015/06/23 职场文书
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js