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 相关文章推荐
在JavaScript中通过URL传递汉字的方法
Apr 09 Javascript
Jquery api 速查表分享
Jan 12 Javascript
js如何实现点击标签文字,文字在文本框出现
Aug 05 Javascript
JS实现的在线调色板实例(附demo源码下载)
Mar 01 Javascript
浅析JavaScript中的array数组类型系统
Jul 18 Javascript
Google 地图API资料整理及详细介绍
Aug 06 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
Aug 09 Javascript
vuejs响应用户事件(如点击事件)
Mar 14 Javascript
javascript实现简易聊天室
Jul 12 Javascript
jQuery实现聊天对话框
Feb 08 jQuery
OpenLayers实现图层切换控件
Sep 25 Javascript
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
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
web方式ftp
2006/10/09 PHP
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
php中执行系统命令的方法
2015/03/21 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
vuejs指令详解
2017/02/07 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
2017/02/22 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
python实现在目录中查找指定文件的方法
2014/11/11 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
Python更换pip源方法过程解析
2020/05/19 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
SQL Server笔试题
2012/01/10 面试题
民族团结先进个人事迹材料
2014/06/02 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
房产公证书
2015/01/23 职场文书
小学校本教研总结
2015/08/13 职场文书
运动会广播稿50字
2015/08/19 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python