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 相关文章推荐
document.all与WEB标准
May 13 Javascript
iframe实用操作锦集
Apr 22 Javascript
javascript面向对象之定义成员方法实例分析
Jan 13 Javascript
javascript实现验证身份证号的有效性并提示
Apr 30 Javascript
javascript实现带下拉子菜单的导航菜单效果
May 14 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
Aug 23 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
Mar 13 Javascript
再谈Angular4 脏值检测(性能优化)
Apr 23 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
Feb 11 Javascript
你可能不知道的CORS跨域资源共享
Mar 13 Javascript
使用Vue实现调用接口加载页面初始数据
Oct 28 Javascript
Canvas三种动态画圆实现方法说明(小结)
Apr 16 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获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
javascript 自动转到命名锚记
2009/01/10 Javascript
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
Javascript中的getUTCHours()方法使用详解
2015/06/10 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
python学习开发mock接口
2019/04/28 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
用python写爬虫简单吗
2020/07/28 Python
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
应用化学专业本科生求职信
2013/09/29 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
计划生育标语
2014/06/23 职场文书
专业见习报告范文
2014/11/03 职场文书
护理工作个人总结
2015/03/03 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
python自动计算图像数据集的RGB均值
2021/06/18 Python
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技