使用javascript插入样式


Posted in Javascript onMarch 14, 2016

一、用javascript插入<style>样式
有时候我们需要利用js来动态生成页面上style标签中的css代码,方法很直接,就是直接创建一个style元素,然后设置style元素里面的css代码,最后把它插入到head元素中。

但有些兼容性问题我们需要解决。首先在符合w3c标准的浏览器中我们只需要把要插入的css代码作为一个文本节点插入到style元素中即可,而在IE中则需要利用style元素的styleSheet.cssText来解决。

还需要注意的就是在有些版本IE中一个页面上style标签数量是有限制的,如果超过了会报错,需要考虑这点。

function addCSS(cssText){
 var style = document.createElement('style'), //创建一个style元素
  head = document.head || document.getElementsByTagName('head')[0]; //获取head元素
 style.type = 'text/css'; //这里必须显示设置style元素的type属性为text/css,否则在ie中不起作用
 if(style.styleSheet){ //IE
  var func = function(){
   try{ //防止IE中stylesheet数量超过限制而发生错误
    style.styleSheet.cssText = cssText;
   }catch(e){

   }
  }
  //如果当前styleSheet还不能用,则放到异步中则行
  if(style.styleSheet.disabled){
   setTimeout(func,10);
  }else{
   func();
  }
 }else{ //w3c
  //w3c浏览器中只要创建文本节点插入到style元素中就行了
  var textNode = document.createTextNode(cssText);
  style.appendChild(textNode);
 }
 head.appendChild(style); //把创建的style元素插入到head中 
}

//使用
addCSS('#demo{ height: 30px; background:#f00;}');

当然这只是一个最基本的演示方法,实际运用中还需进行完善,比如把每次生成的css代码都插入到一个style元素中,这样在IE中就不会发生stylesheet数量超出限制的错误了。

封装:

var importStyle=function importStyle(b){var a=document.createElement("style"),c=document;c.getElementsByTagName("head")[0].appendChild(a);if(a.styleSheet){a.styleSheet.cssText=b}else{a.appendChild(c.createTextNode(b))}};

importStyle('h1 { background: red; }');//调用

seajs封装

seajs.importStyle=function importStyle(b){var a=document.createElement("style"),c=document;c.getElementsByTagName("head")[0].appendChild(a);if(a.styleSheet){a.styleSheet.cssText=b}else{a.appendChild(c.createTextNode(b))}};

二、javascript插入<link>样式
在<head>中使用<link>标签引入一个外部样式文件,这个比较简单,各个主流浏览器也不存在兼容性问题:
function includeLinkStyle(url) {
var link = document.createElement(“link”);
link.rel = “stylesheet”;
link.type = “text/css”;
link.href = url;
document.getElementsByTagName(“head”)[0].appendChild(link);
}

includeLinkStyle(“http://css.xxx.com/home/css/reset.css?v=20101227”);

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
js实现简单排列组合的方法
Jan 27 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
Oct 11 Javascript
js实现碰撞检测特效代码分享
Oct 16 Javascript
JS异步文件上传(兼容IE8+)
Apr 02 Javascript
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
Vue通过URL传参如何控制全局console.log的开关详解
Dec 07 Javascript
javascript中UMD规范的代码推演
Aug 29 Javascript
socket在egg中的使用实例代码详解
May 30 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
Sep 12 Javascript
Layui数据表格之单元格编辑方式
Oct 26 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
Jan 29 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
Mar 14 #Javascript
javascript实现数组去重的多种方法
Mar 14 #Javascript
javascript实现PC网页里的拖拽效果
Mar 14 #Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 #Javascript
node模块机制与异步处理详解
Mar 13 #Javascript
JS中创建函数的三种方式及区别
Mar 13 #Javascript
使用jQuery操作HTML的table表格的实例解析
Mar 13 #Javascript
You might like
帅气的琦玉老师
2020/03/02 日漫
PHP制作万年历
2015/01/07 PHP
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
JavaScript跨域调用基于JSON的RESTful API
2016/07/09 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
pycharm安装图文教程
2017/05/02 Python
python 默认参数相关知识详解
2019/09/18 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
python如何通过twisted搭建socket服务
2020/02/03 Python
python 对象真假值的实例(哪些视为False)
2020/12/11 Python
python中time包实例详解
2021/02/02 Python
python中封包建立过程实例
2021/02/18 Python
美国知名生活购物网站:Goop
2017/11/03 全球购物
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
会务接待方案
2014/02/27 职场文书
降消项目实施方案
2014/03/30 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
python 实现体质指数BMI计算
2021/05/26 Python
Python实现生成bmp图像的方法
2021/06/13 Python
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL