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 相关文章推荐
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
Mar 01 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
May 07 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
May 13 Javascript
简述jQuery ajax的执行顺序
Jan 05 Javascript
微信小程序左滑删除效果的实现代码
Feb 20 Javascript
详解vue.js全局组件和局部组件
Apr 10 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
May 12 Javascript
jQuery 实时保存页面动态添加的数据的示例
Aug 14 jQuery
AngularJs返回前一页面时刷新一次前面页面的方法
Oct 09 Javascript
微信小程序如何获取用户收货地址
Nov 27 Javascript
vue+element+Java实现批量删除功能
Apr 08 Javascript
二维码条形码生成的JavaScript脚本库
Jul 07 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中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
PHP基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
快速排序 php与javascript的不同之处
2011/02/22 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
微信小程序自动客服功能
2017/11/02 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
2019/09/26 Javascript
Python入门篇之条件、循环
2014/10/17 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
深入浅析python 中的匿名函数
2018/05/21 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
pandas数据处理进阶详解
2019/10/11 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
django form和field具体方法和属性说明
2020/07/09 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
意大利一家专营包包和配饰的网上商店:Borse Last Minute
2019/08/26 全球购物
护士自我鉴定
2013/10/23 职场文书
小区门卫工作职责
2013/12/14 职场文书
水电工岗位职责
2014/02/12 职场文书
人事专员的岗位职责
2014/03/01 职场文书
个人担保书格式范文
2014/05/12 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
丧事主持词
2015/07/02 职场文书
优秀教师工作总结2015
2015/07/22 职场文书
会议室使用管理制度
2015/08/06 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书