javascript 动态生成css代码的两种方法


Posted in Javascript onMarch 17, 2017

javascript 动态生成css代码的两种方法

有时候我们需要利用js来动态生成页面上style标签中的css代码,方法很直接,就是直接创建一个style元素,然后设置style元素里面的css代码,最后把它插入到head元素中。但有些兼容性问题我们需要解决。首先在符合w3c标准的浏览器中我们只需要把要插入的css代码作为一个文本节点插入到style元素中即可,而在IE中则需要利用style元素的styleSheet.cssText来解决。还需要注意的就是在有些版本IE中一个页面上style标签数量是有限制的,如果超过了会报错,需要考虑这点。

方法1:

给<style id="css">标签添加一个id名,在<script>标签中写

var oCss=document.getElementById("css");

oCss.innerHTML+="#box{width:200px;}";

这样就可以加上样式了。

方法2:

有时候我们需要利用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数量超出限制的错误了。

总结:以上方法可以解决很多问题,有什么不懂的找我!

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
Aug 15 Javascript
javascript使用eval或者new Function进行语法检查
Oct 16 Javascript
JavaScript学习笔记之获取当前目录的实现代码
Dec 14 Javascript
jquery offset函数应用实例
Nov 14 Javascript
用jquery模仿的a的title属性的例子
Oct 22 Javascript
详解javascript实现瀑布流绝对式布局
Jan 29 Javascript
Jquery实现上下移动和排序代码
Oct 17 Javascript
jQuery插件扩展操作入门示例
Jan 16 Javascript
微信小程序 新建登录页并实现tabBar隐藏
Jun 13 Javascript
JavaScript实现轮播图效果代码实例
Sep 28 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
OpenLayer3自定义测量控件MeasureTool
Sep 28 Javascript
AngularJS中$http使用的简单介绍
Mar 17 #Javascript
单击按钮发送验证码,出现倒计时的简单实例
Mar 17 #Javascript
jQuery Ajax前后端使用JSON进行交互示例
Mar 17 #Javascript
Bootstrap表格制作代码
Mar 17 #Javascript
鼠标经过出现气泡框的简单实例
Mar 17 #Javascript
angularJS之$http:与服务器交互示例
Mar 17 #Javascript
Bootstrap下拉菜单Dropdowns的实现代码
Mar 17 #Javascript
You might like
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
javascript常用的设计模式
2017/02/09 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
bootstrap Table实现合并相同行
2019/07/19 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Python实现八大排序算法
2016/08/13 Python
利用Python破解验证码实例详解
2016/12/08 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
django中的数据库迁移的实现
2020/03/16 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
物流管理毕业生自荐信范文
2014/03/15 职场文书
校园标语大全
2014/06/19 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书