javascript动态添加样式(行内式/嵌入式/外链式等规则)


Posted in Javascript onJune 24, 2013

添加CSS的方式有行内式、嵌入式、外链式、导入式
a)动态引入样式表文件:

function loadLink(url){ 
var link = document.createElement("link"); 
link.type = "text/css"; 
link.rel = "stylesheet"; 
link.href = url; 
var head = document.getElmentsByTagName("head")[0]; 
head.appendChild(link); 
}

b)嵌入式:
function insertStyles(){ 
var doc,cssCode=[],cssText; 
var len = arguments.length; 
var head,style,firstStyle; 
if(len == 1){ 
doc = document; 
cssCode.push(arguments[0]) 
}else if(len == 2){ 
doc = arguments[0]; 
cssCode.push(arguments[1]); 
}else{ 
alert("函数最多接收两个参数!"); 
} 
head = doc.getElementsByTagName("head")[0]; 
styles= head.getElementsByTagName("style"); 
if(styles.length == 0){ 
if(doc.createStyleSheet){//ie 
doc.createStyleSheet(); 
}else{//FF 
var tempStyle = doc.createElement("style"); 
tempStyle.setAttibute("type","text/css"); 
head.appendChild(tempStyle); 
} 
} 
firstStyle = styles[0]; 
cssText=cssCode.join("\n"); 
if(!+"\v1"){//opacity兼容 
var str = cssText.match(/opacity:(\d?\.\d+);/); 
if(str!=null){ 
cssText = cssText.replace(str[0],"filter:alpha(opacity="+pareFloat(str[1])*100+")"); 
} 
} 
if(firstStyle.styleSheet){ 
firstStyle.styleSheee.cssText += cssText; 
}else if(doc.getBoxObjectFor){ 
firstStyle.innerHTML += cssText; 
}else{ 
firstStyle.appendChild(doc.createTextNode(cssText)); 
} 
}

c)行内式:
var addStyle=function (ele,str){ 
var s = ele.getAttribute("style"),styles; 
if(str && typeof str === "string"){ 
if(!s){ 
ele.style.cssText = str; 
}else{ 
if(s == '[object]'){//IE6/7 e.getAttribute("style")返回[object] 
s=ele.style.cssText; 
} 
styles= trim(s).split(";"); 
for (var i=0,len=styles.length; i<len; i++){ 
var style_i=trim(styles[i]); 
var attr=style_i.split(":")[0]; 
if(str.indexOf(attr)>-1){ 
styles[i]=""; 
}else{ 
styles[i]=style_i; 
} 
} 
ele.style.cssText= styles.join("")+";"+str; 
} 
} 
}

d)导入式:
import "index.css";
操作CSS 类相关的方法:
var hasClass=function(ele,value){ 
var rclass = /[\n\t\r]/g, 
value=" "+value+" "; 
return (ele.nodeType==1)&&(" "+ele.className+" ").replace(rclass," ").indexOf(value)>-1; 
} 
var trim=function (val){ 
return val.replace(/(^\s+)|(\s+$)/g,""); 
} 
var addClass=function(ele,value){ 
var rspace = /\s+/,classNames,getClass; 
if(value&&typeof value === "string"){ 
classNames = value.split(rspace); 
if(ele.nodeType === 1){ 
if(!ele.className && classNames.length == 1){ 
ele.className = value; 
}else{ 
getClass = " "+ele.className+" "; 
for(var i=0,len=classNames.length; i<len ;i++){ 
var cname=classNames[i]; 
if(!hasClass(ele,cname)){ 
getClass += cname+" "; 
} 
} 
ele.className = trim(getClass); 
} 
} 
} 
} 
var removeClass=function(ele,value){ 
var rclass = /[\n\t\r]/g,classNames,getClass; 
if((value&&typeof value === "string")||value === undefined){ 
classNames = (value||"").split(rspace); 
if(ele.nodeType === 1 && ele.className){ 
if(value){//存在查找要移除的类 
getClass = " "+ele.className+" ".replace(rclass," ");//左右空格,为了使类中各类间均等,方便后面替换 
for(var i=0,len=classNames.length; i<len; i++){ 
getClass = getClass.replace(" "+classNames[i]+" "," ") 
} 
ele.className=trim(getClass); 
}else{//不存在移除所有类 
ele.className = ""; 
} 
} 
} 
} 
var toggleClass=function(ele,value){ 
if(typeof value === "string"){ 
if(hasClass(ele,value)){ 
removeClass(ele,value); 
}else{ 
addClass(ele,value); 
} 
} 
}
Javascript 相关文章推荐
用javascript实现画板的代码
Sep 05 Javascript
从JavaScript 到 JQuery (1)学习小结
Feb 12 Javascript
javascript下判断一个对象是否具有指定名称的属性的的代码
Jan 11 Javascript
JS简单限制textarea内输入字符数量的方法
Oct 14 Javascript
javascript针对不确定函数的执行方法
Dec 16 Javascript
Jquery轮播效果实现过程解析
Mar 30 Javascript
AngularJs基本特性解析(一)
Jul 21 Javascript
JavaScript数组去重算法实例小结
May 07 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
Aug 13 Javascript
使用jQuery动态设置单选框的选中效果
Dec 06 jQuery
vue-loader中引入模板预处理器的实现
Sep 04 Javascript
详解小程序如何改变onLoad的执行时机
Nov 01 Javascript
JS实现的省份级联实例代码
Jun 24 #Javascript
javascript中的绑定与解绑函数应用示例
Jun 24 #Javascript
用jquery生成二级菜单的实例代码
Jun 24 #Javascript
自动刷新网页,自动刷新当前页面,JS调用
Jun 24 #Javascript
jquery中的事件处理详细介绍
Jun 24 #Javascript
模拟电子签章盖章效果的jQuery插件源码
Jun 24 #Javascript
Js注册协议倒计时的小例子
Jun 24 #Javascript
You might like
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
php打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PDO::prepare讲解
2019/01/29 PHP
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
python中引用与复制用法实例分析
2015/06/04 Python
python制作一个桌面便签软件
2015/08/09 Python
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
python如何重载模块实例解析
2018/01/25 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
详解Pycharm与anaconda安装配置指南
2020/08/25 Python
python中uuid模块实例浅析
2020/12/29 Python
应用数学自荐书范文
2013/11/24 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
玄武湖导游词
2015/02/05 职场文书
校长师德表现自我评价
2015/03/04 职场文书
Python基础之条件语句详解
2021/06/16 Python