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 相关文章推荐
JS backgroundImage控制
May 19 Javascript
利用jQuery 实现GridView异步排序、分页的代码
Feb 06 Javascript
图片上传插件jquery.uploadify详解
Nov 15 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
Dec 29 Javascript
jquery实现上下左右滑动的方法
Feb 09 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
Aug 06 Javascript
实例解析jQuery工具函数
Dec 01 Javascript
微信小程序 获取javascript 里的数据
Aug 17 Javascript
微信小程序模拟cookie的实现
Jun 20 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
Apr 04 Javascript
layui对工具条进行选择性的显示方法
Sep 19 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
Nov 04 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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
PHP安装攻略:常见问题解答(一)
2006/10/09 PHP
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
python执行子进程实现进程间通信的方法
2015/06/02 Python
简单的python后台管理程序
2017/04/13 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
Python连接Redis的基本配置方法
2018/09/13 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
python绘制简单彩虹图
2018/11/19 Python
python 提取文件指定列的方法示例
2019/08/07 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
学期自我鉴定范文
2013/10/01 职场文书
元旦晚会邀请函
2014/02/01 职场文书
运动会通讯稿500字
2014/02/20 职场文书
夫妻吵架保证书
2015/05/08 职场文书
公司欠款证明
2015/06/24 职场文书
公司行政管理制度范本
2015/08/05 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python