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 相关文章推荐
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
Nov 11 Javascript
js打开新窗口方法整理
Feb 17 Javascript
javascript中通过arguments参数伪装方法重载
Oct 08 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
Feb 03 Javascript
学JavaScript七大注意事项【必看】
May 04 Javascript
详解javascript表单的Ajax提交插件的使用
Dec 29 Javascript
JavaScript下拉菜单功能实例代码
Mar 01 Javascript
vue-cli+webpack记事本项目创建
Apr 01 Javascript
jQuery图片加载失败替换默认图片方法汇总
Nov 29 jQuery
Vue实现背景更换颜色操作
Jul 17 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
Jul 19 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
一个取得文件扩展名的函数
2006/10/09 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
js实现鼠标经过时图片滚动停止的方法
2015/02/16 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
Python open读写文件实现脚本
2008/09/06 Python
python实现决策树
2017/12/21 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
python pygame模块编写飞机大战
2018/11/20 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
接受捐赠答谢词
2014/01/27 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
委托函范文
2015/01/29 职场文书
圆明园观后感
2015/06/03 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
详解flex:1什么意思
2022/07/23 HTML / CSS
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS