动态样式类封装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 相关文章推荐
jQuery学习笔记之Helloworld
Dec 22 Javascript
javascript学习笔记(八) js内置对象
Jun 19 Javascript
JS获取浏览器版本及名称实现函数
Apr 02 Javascript
jquery 无限级下拉菜单的简单实现代码
Feb 21 Javascript
Javascript学习笔记之数组的遍历和 length 属性
Nov 23 Javascript
原生javascript实现图片滚动、延时加载功能
Jan 12 Javascript
jQuery中extend()和fn.extend()方法详解
Jun 03 Javascript
全面了解javascript三元运算符
Jun 27 Javascript
JavaScript每天必学之事件
Sep 18 Javascript
Vue.js实现简单ToDoList 前期准备(一)
Dec 01 Javascript
js字符串与Unicode编码互相转换
May 17 Javascript
小程序实现单选多选功能
Nov 04 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
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
一个PHP分页类的代码
2011/05/18 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
jQuery :first选择器使用介绍
2013/08/09 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
微信小程序 wxParse插件显示视频问题
2019/09/27 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
Python selenium文件上传方法汇总
2020/11/19 Python
Python 多线程实例详解
2017/03/25 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
基于python生成器封装的协程类
2019/03/20 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
django框架创建应用操作示例
2019/09/26 Python
如何通过python实现全排列
2020/02/11 Python
python实现126邮箱发送邮件
2020/05/20 Python
vivo智能手机官方商城:vivo
2016/09/22 全球购物
Miller Harris官网:英国小众香水品牌
2020/09/24 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
党委书记岗位职责
2013/11/24 职场文书
大学生求职自我评价
2014/01/16 职场文书
环保建议书400字
2014/05/14 职场文书
数学教研活动总结
2014/07/02 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
个人批评与自我批评
2014/10/15 职场文书
2014年妇幼卫生工作总结
2014/12/09 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js