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 相关文章推荐
经典的解除许多网站无法复制文字的绝招
Dec 31 Javascript
jQuery 自动增长的文本输入框实现代码
Apr 02 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
Nov 25 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
May 23 Javascript
javascript loadScript异步加载脚本示例讲解
Nov 14 Javascript
javascript定义变量时加var与不加var的区别
Dec 22 Javascript
jQuery表单对象属性过滤选择器实例详解
Sep 13 Javascript
纯js仿淘宝京东商品放大镜功能
Mar 02 Javascript
在Angular中使用JWT认证方法示例
Sep 10 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
Dec 09 Javascript
JS函数节流和防抖之间的区分和实现详解
Jan 11 Javascript
微信小程序实现文件、图片上传功能
Aug 18 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维护文件系统
2006/10/09 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
Vue 列表页带参数进详情页的操作(router-link)
2020/11/13 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
python保存网页图片到本地的方法
2018/07/24 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
python实现UDP协议下的文件传输
2020/03/20 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
支部书记四风问题对照检查材料
2014/10/04 职场文书
团员个人总结
2015/02/26 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
JavaScript实现显示和隐藏图片
2021/04/29 Javascript