使用javascript插入样式

 更新时间:2016年03月14日 11:55:06   作者:starof  
这篇文章主要介绍了使用javascript插入样式的相关方法,用javascript插入<style>样式以及<link>样式,感兴趣的小伙伴们可以参考一下

一、用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”);

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

相关文章

  • Cropper.js进阶之裁剪后保存至服务器实现详解

    Cropper.js进阶之裁剪后保存至服务器实现详解

    这篇文章主要为大家介绍了Cropper.js进阶之裁剪后保存至服务器实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Linux下使用jq友好的打印JSON技巧分享

    Linux下使用jq友好的打印JSON技巧分享

    本文主要给大家介绍通过一个叫jq的小工具,非常的实用,给大家参考下
    2014-11-11
  • 详解JavaScript数组的常用方法

    详解JavaScript数组的常用方法

    这篇文章主要为大家介绍了JavaScript数组的常用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • JavaScript获取URL汇总

    JavaScript获取URL汇总

    在WEB开发中,许多开发者都比较喜欢使用javascript来获取当前url网址,本文就此为大家总结一下比较常用获取URL的javascript实现代码
    2015-06-06
  • 分享纯手写漂亮的表单验证

    分享纯手写漂亮的表单验证

    最近没有项目做,闲来没事,于是自己动手写了几个表单验证,特此分享供大家参考
    2015-11-11
  • 微信小程序天气预报功能实现(支持自动定位,附源码)

    微信小程序天气预报功能实现(支持自动定位,附源码)

    对于一个经常出门在外的人,关注天气是至关重要的,下面这篇文章主要给大家介绍了关于微信小程序天气预报功能实现的相关资料,文中通过实例代码介绍的非常详细,支持自动定位,需要的朋友可以参考下
    2022-04-04
  • JS防抖节流函数的实现与使用场景

    JS防抖节流函数的实现与使用场景

    在行走江湖的过程中,会出现很多性能优化的问题来让你手足无措,那么这篇文章主要给大家介绍了关于JS防抖节流函数的实现与使用场景,针对这两个问题来为你答疑解惑,需要的朋友可以参考下
    2021-07-07
  • 一文教你如何优雅的使用WebSocket

    一文教你如何优雅的使用WebSocket

    WebSocket最大特点就是服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种,下面这篇文章主要给大家介绍了关于如何优雅的使用WebSocket的相关资料,需要的朋友可以参考下
    2022-05-05
  • mvc 、bootstrap 结合分布式图简单实现分页

    mvc 、bootstrap 结合分布式图简单实现分页

    这篇文章主要介绍了mvc 、bootstrap 结合分布式图简单实现分页的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • javascript控制frame,iframe的src属性代码

    javascript控制frame,iframe的src属性代码

    原理就是通过获取当前网页地址栏的信息传参,然后设置框架的地址。
    2009-12-12

最新评论