使用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 相关文章推荐
js hover 定时器(实例代码)
Nov 12 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
Aug 15 Javascript
JavaScript模拟重力状态下抛物运动的方法
Mar 03 Javascript
基于Bootstrap+jQuery.validate实现表单验证
May 30 Javascript
鼠标经过出现气泡框的简单实例
Mar 17 Javascript
PHP自动加载autoload和命名空间的应用小结
Dec 01 Javascript
Webpack中雪碧图插件使用详解
May 25 Javascript
Vue.js组件间通信方式总结【推荐】
Nov 23 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
Feb 12 Javascript
vue基于viewer实现的图片查看器功能
Apr 12 Javascript
详解小程序BackgroundAudioManager踩坑之旅
Dec 08 Javascript
JavaScript 异步时序问题
Nov 20 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开发模式(简写版)
2007/03/15 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
Javascript 二维数组
2009/11/26 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
JavaScript获得页面base标签中url的方法
2015/04/03 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
极简鞋类,赤脚的感觉:Lems Shoes
2019/08/06 全球购物
国际商务专业学生个人的自我评价
2013/09/28 职场文书
三好学生事迹材料
2014/12/24 职场文书
入党自传范文2015
2015/06/26 职场文书
考试后的感想
2015/08/07 职场文书
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
总结高并发下Nginx性能如何优化
2021/11/01 Servers