使用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 相关文章推荐
JavaScript中的16进制字符(改进)
Nov 21 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
Mar 21 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
Nov 28 Javascript
深入理解jQuery layui分页控件的使用
Aug 17 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
Oct 21 Javascript
ES6概念 Symbol toString()方法
Dec 25 Javascript
微信小程序 天气预报开发实例代码源码
Jan 20 Javascript
微信小程序 后台登录(非微信账号)实例详解
Mar 31 Javascript
vue项目中应用ueditor自定义上传按钮功能
Apr 27 Javascript
如何用Node写页面爬虫的工具集
Oct 26 Javascript
Vue 引入AMap高德地图的实现代码
Apr 29 Javascript
关于JS解构的5种有趣用法
Sep 05 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
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
jQuery实现多按钮单击变色
2014/11/27 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
屈臣氏泰国官网:Watsons TH
2021/02/23 全球购物
专科毕业生就业推荐信
2013/11/01 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
2014年宣传工作总结
2014/11/18 职场文书
质量保证书
2015/01/17 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫