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 相关文章推荐
JScript内置对象Array中元素的删除方法
Mar 08 Javascript
代码精简的可以实现元素圆角的js函数
Jul 21 Javascript
JS实现时间格式化的方式汇总
Oct 16 Javascript
JavaScript中for-in遍历方式示例介绍
Feb 11 Javascript
使用window.prompt()实现弹出用户输入的对话框
Apr 13 Javascript
JQ技术实现注册页面带有校验密码强度
Jul 27 Javascript
JS实现点击链接切换显示隐藏内容的方法
Oct 19 Javascript
Vue v2.5 调整和更新不完全问题
Oct 24 Javascript
webpack的pitching loader详解
Sep 23 Javascript
微信小程序实现吸顶效果
Jan 08 Javascript
JavaScript中CreateTextFile函数
Aug 30 Javascript
swiperjs实现导航与tab页的联动
Dec 13 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
一个程序下载的管理程序(二)
2006/10/09 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python的垃圾回收机制深入分析
2014/07/16 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
python中字符串内置函数的用法总结
2018/09/13 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
银行职业规划书范文
2013/12/28 职场文书
班会关于环保演讲稿
2013/12/29 职场文书
战友聚会主持词
2014/04/02 职场文书
中秋晚会活动方案
2014/08/31 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
教师个人学习总结
2015/02/11 职场文书
房屋维修申请报告
2015/05/18 职场文书
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers