动态样式类封装JS代码
2023-06-13 09:14:12 时间
文件名StyleSheet.js
复制代码代码如下:
//CssRule类由StyleSheet.getRule方法返回,不直接创建
functionCssRule(rule){
this.rule=rule;
this.style=rule.style;
this.selectorText=rule.selectorText;
this.index=null;
}
functionStyleSheet(){
varhead=document.getElementsByTagName("head")[0];
//通过新建标签来创建新样式
/*
在此不用document.createStyleSheet来完成,是因为在FF下
如果未导入任何CSS文件的情况下document.createStyleSheet方法失败
*/
varstyle=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){
varindex=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
returnthis.style.rules;
}
returnthis.style.cssRules;//非IE
},
//通过选择器,取得样式
getRule:function(selector){
varrules=this.getRules();
for(vari=0;i<rules.length;i++){
varr=rules[i];
if(r.selectorText==selector){
varrule=newCssRule(r);
rule.index=i;
returnrule;
}
}
returnnull;
}
};
调用示例代码
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<scriptsrc="StyleSheet.js"type="text/javascript"></script>
<scriptlanguage="javascript"type="text/javascript"><!--
varss=newStyleSheet();
window.onload=function(){
ss.AddRule(".test","color:#FF0000;background-color:#F0F0F0;font-size:12px;border:solid1px#A0A0A0;");
}
functionSet(){
varr=ss.getRule(".test");
varslt=document.getElementById("tbSelector").value;
varv=document.getElementById("tbValue").value;
varstyle=r.style;
style[slt]=v;
}
//--></script>
</head>
<body>
样式<inputid="tbSelector"type="text"value="width"/>
值<inputid="tbValue"type="text"value="300px"/>
<inputtype="button"value="设置"onclick="Set()"/>
<divclass="test">a</div>
<divclass="test">b</div>
<divclass="test">c</div>
<divclass="test">d</div>
<divclass="test">e</div>
</body>
</html>
相关文章
- js面试题及答案2020_JS面试题大全
- 【再来亿遍 温故知新】—— 关于 JS 原型你必须要知道的二三
- JS算法探险之栈(Stack)
- Clipboard.js实现复制[通俗易懂]
- js中四舍五入的方法_JS取整
- JS对象转数组_js怎么把数组转成对象
- Next.js 中的 SEO
- Node.JS 安装配置 | 安装排错解析
- get两个js小技能——JS截取视频第一帧&图片转Base64
- 如何使用jscythe并通过Node.js的Inspector机制执行任意JS代码
- 原生JS封装时间运动函数详解编程语言
- 使用html+css+js实现日历与定时器,看看今天的日期和今天剩余的时间。详解编程语言
- 使用JS连接MySQL数据库:实现化繁为简(js连接mysql数据库)
- JS实时链接Oracle让数据库访问更便捷(js实时连接oracle)
- 使用JS操作Oracle数据库探索潜在可能性(js和oracle数据库)
- JS在Oracle中的应用(js如何oracle)
- 从前端JS里请求Redis资源,搭建高性能应用(前端js请求redis)
- JS应用之禁止抓屏、复制、打印
- JS+Ajax+Jquery实现页面无刷新分页以及分组超强的实现
- Iframe自适应高度并实时监控高度变化的js代码
- 查询绑定数据岛的表格中的文本并修改显示方式的js代码
- JS简单动画封装浅析
- js延迟加载改变JS的位置加快网页加载速度
- 原生js实现给指定元素的后面追加内容
- JS控制文本框textarea输入字数限制的方法
- 封装html的select标签的js操作实例
- 顶部缓冲下拉菜单导航特效的JS代码
- JS实现字体选色板实例代码
- js获取url参数代码实例分享(JS操作URL)
- JS获取节点的兄弟,父级,子级元素的方法
- js中opener与parent的区别详细解析
- 原生js事件的添加和删除的封装
- node.js中的fs.lchown方法使用说明
- 封装好的js判断操作系统与浏览器代码分享
- 页面加载完后自动执行一个方法的js代码