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获取鼠标点击的位置实现思路及代码
May 09 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
Apr 19 Javascript
AngularJS教程之MVC体系结构详解
Aug 16 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
Aug 18 Javascript
python爬取安居客二手房网站数据(实例讲解)
Oct 19 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
Mar 06 Javascript
vue计算属性及使用详解
Apr 02 Javascript
jQuery实现基本隐藏与显示效果的方法详解
Sep 05 jQuery
2种在vue项目中使用百度地图的简单方法
Sep 28 Javascript
vue 表单之通过v-model绑定单选按钮radio
May 13 Javascript
vue中的面包屑导航组件实例代码
Jul 01 Javascript
js不常见操作运算符总结
Nov 20 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 ZipArchive压缩函数详解实例
2013/11/06 PHP
smarty简单入门实例
2014/11/28 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
CheckBoxList多选样式jquery、C#获取选择项
2013/09/06 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
JS设置cookie、读取cookie、删除cookie
2015/04/17 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
Python检测QQ在线状态的方法
2015/05/09 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
深入了解python列表(LIST)
2020/06/08 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
司机的工作范围及职责
2013/11/13 职场文书
优秀中专生推荐信
2013/11/17 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
感谢信
2019/04/11 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
关于使用Redisson订阅数问题
2022/01/18 Redis
什么是css原子化,有什么用?
2022/04/24 HTML / CSS
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android