使用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编程起步(第二课)
Feb 27 Javascript
一个背景云变换js特效 鼠标移动背景云变化
Dec 28 Javascript
生成二维码方法汇总
Dec 26 Javascript
jQuery取消特定的click事件
Feb 29 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
Jun 16 Javascript
JavaScript 基础表单验证示例(纯Js实现)
Jul 20 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
Jun 01 Javascript
JS实现获取数组中最大值或最小值功能示例
Mar 02 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
Aug 07 Javascript
JS实现容器模块左右拖动效果
Jan 14 Javascript
vue实现移动端拖动排序
Aug 21 Javascript
Vue 数据响应式相关总结
Jan 28 Vue.js
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
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
form表单转Json提交的方法(推荐)
2016/09/23 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
jquery实现回车键触发事件(实例讲解)
2017/11/21 jQuery
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
详解关于element el-button使用$attrs的一个注意要点
2018/11/09 Javascript
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
Python中__init__.py文件的作用详解
2016/09/18 Python
解析python的局部变量和全局变量
2019/08/15 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
计算机网络专业推荐信
2013/11/24 职场文书
计算机学生求职信范文
2014/01/30 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
企业宣传工作方案
2014/06/02 职场文书
2014年领班工作总结
2014/11/25 职场文书
2015元旦感言
2015/12/09 职场文书
pytorch中的numel函数用法说明
2021/05/13 Python
python中如何对多变量连续赋值
2021/06/03 Python