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 相关文章推荐
出现“不能执行已释放的Script代码”错误的原因及解决办法
Aug 29 Javascript
Textarea与懒惰渲染实现代码
Jan 04 Javascript
JS中的this变量的使用介绍
Oct 21 Javascript
一个简单的全屏图片上下打开显示网页效果示例
Jul 08 Javascript
jquery mobile移动端幻灯片滑动切换效果
Apr 15 Javascript
js实现简单的二级联动效果
Mar 09 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
Apr 11 Javascript
jquery对table做排序操作的实例演示
Aug 10 jQuery
JavaScript对象的特性与实践应用深入详解
Dec 30 Javascript
浅谈javascript错误处理
Aug 11 Javascript
vue3 源码解读之 time slicing的使用方法
Oct 31 Javascript
vue组件是如何解析及渲染的?
Jan 13 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
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
2016/05/12 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
Python文件操作类操作实例详解
2014/07/11 Python
python实现斐波那契递归函数的方法
2014/09/08 Python
进一步了解Python中的XML 工具
2015/04/13 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
Python 在局部变量域中执行代码
2020/08/07 Python
Python list和str互转的实现示例
2020/11/16 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
最新的大学生找工作自我评价
2013/09/29 职场文书
《愚公移山》教学反思
2014/02/20 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python