IE8动态创建CSS
IE8动态创建CSS
最近在项目中用到在页面中动态创建CSS方法,记录一下方便以后查看
一. 在IE下动态创建(网上收集3种方法,最后一个方法未测试成功,具体不知道什么原因)
第一种(此方法很麻烦,需要把字符串拆开写,长一点的话受不了)
var sheet = document.createStyleSheet();
sheet.addRule('body', 'background-color: red');
第二种(此方法来自于一个国外网站)
var styleSheet = document.createStyleSheet("");
styleSheet.cssText = 'body{background-color: red}';
第三种(此方法测试失败)
window.style = "body{background-color: blue;";
document.createStyleSheet("javascript:style");
二. 在非IE下动态创建
var styleDom = document.createElement('style');
styleDom.type = 'text/css';
styleDom.innerHTML = 'body{background-color: red}';
document.getElementsByTagName('HEAD').item(0).appendChild(styleDom)
组合之后方法
// 动态插入 CSS 代码
function dynamInsertCss(classStr) {
// IE 浏览器
if (document.all) {
/**
* 此方法参考 https://blog.chou.it/2013/06/load-dynamic-css-under-ie8/?utm_source=tuicool&utm_medium=referral
* 此方法需要拆开单个的规则,然后依次调用 addRule
var styleDom = document.createStyleSheet(),
rules = classStr.replace(/\/\*[^\*]*\*\//g, "").replace(/@[^{]*\{/g, '').match(/[^\{\}]+\{[^\}]+\}/g),
m;
for (var i = 0, len = rules.length; i < len; i++) {
m = rules[i].match(/(.*)\s*\{\s*(.*)\}/);
if (m) {
try {
styleDom.addRule(m[1], m[2])
} catch(e) {}
}
}
*/ // 此方法参考 http://help.dottoro.com/ljpxthtl.php
var styleSheet = document.createStyleSheet("");
styleSheet.cssText = classStr;
} else {
var styleDom = document.createElement('style');
styleDom.type = 'text/css';
styleDom.innerHTML = classStr;
document.getElementsByTagName('HEAD').item(0).appendChild(styleDom)
}
}
// 调用
dynamInsertCss("body{background: black;}#id{background: blue;}.class{background: red}");
已经在IE8,IE10,Edge,猎豹环境下测试无问题
IE8动态创建CSS的更多相关文章
- H5_0010:JS动态创建CSS,并向CSS中传入参数值
1,在html中定义style 2,js中创建css,并添加进入head标签style中 !function(e, t, i) { n.classList && n.classList ...
- 动态修改css 规则
页面引用了两个样式表: <link href="css/mui.min.css" rel="stylesheet" /> <link href ...
- js动态创建style节点(js文件中添加css)
ie6 不能 document.createElement('style') 然后append到head标签里.所以就找到这样个好文章 --------------------- 有很多提供动态创建 ...
- JS动态引入js,CSS——动态创建script/link/style标签
一.动态创建link方式 我们可以使用link的方式.如下代码所示. 二.动态创建style方式 但是,这样的话,需要加载整个css文件,但是那样有可能浪费一个http请求并占用一个服务器请求数,并等 ...
- JS动态引入js、CSS动态创建script/link/style标签
一.动态创建link方式 我们可以使用link的方式.如下代码所示. function addCssByLink(url){ var doc=document; var link=doc.create ...
- 动态创建js脚本和 css样式
//1.动态添加外部js文件 function loadScript(url){ var script = document.createElement("script"); sc ...
- 初探原生js根据json数据动态创建table
初探原生js根据json数据动态创建table 小生以实习生的职位进入了一家非纯软件的公司做asp.net开发,大半个月下来发现公司里居然没有前端工程师,这令我很诧异,跟着公司做项目,发现前端后台没有 ...
- JavaScript 动态插入 CSS
写组件时有时想把一些组件特性相关的 CSS 样式封装在 JS 里,这样更内聚,改起来方便.JS 动态插入 CSS 两个步骤就可以 创建一个 style 对象 使用 stylesheet 的 inser ...
- .Net 中的反射(动态创建类型实例) - Part.4
动态创建对象 在前面节中,我们先了解了反射,然后利用反射查看了类型信息,并学习了如何创建自定义特性,并利用反射来遍历它.可以说,前面三节,我们学习的都是反射是什么,在接下来的章节中,我们将学习反射可以 ...
随机推荐
- solidity事件详解
很多同学对Solidity 中的Event有疑问,这篇文章就来详细的看看Solidity 中Event到底有什么用? 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊. ...
- 3.azkaban3.0测试
测试目标 azkaban多executor下flow的分配方式 azkaban可以同时执行的flow\job个数 azkaban单个job最小使用的内存 相关配置 executor最大线程数: exe ...
- Java学习个人备忘录之抽象类
抽象类 特点:1. 方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰,抽象方法必须定义在抽象类中.该类必须也被abstract修饰2. 抽象类不可以被实例化. 为什么? 因为调 ...
- Java 二维数组
在 Java 中,二维数组与一维数组一样,但是不同于 C 中的二维数组: 1. 在 Java 中,二维数组可以看成是以数组为元素的数组,例如: int a[][] = {{1,2},{3,4,5,6 ...
- thinkphp5学习记录一
1 使用composer安装 composer create-project topthink/think=5.0.* tpblog --prefer-dist 2 配置环境vim /usr/loca ...
- 【Linux】- CentOS查看IP
1.查询命令: ip addr 显示如图: 可以看到ens33没有inet这个属性,那么就没办法通过IP远程连接. 2.设置配置文件: vi /etc/sysconfig/network-script ...
- [计算机网络] 互联网协议栈(TCP/IP参考模型)各层的主要功能及相应协议
应用层:提供用户与网络间的接口.----HTTP.FTP.SMTP 运输层:进程到进程间的数据传输.---TCP.UDP 网络层:主机到主机之间的数据传输.---IP.选路协议 数据链路层:相邻结点之 ...
- springBoot @Enable*注解的工作原理
使用注解实现异步 RunnableDemo类 package com.boot.enable.bootenable; import org.springframework.scheduling.ann ...
- HDU 4638 group(离线+树状数组)
此题实质上是询问每段区间[l,r]内的数字能组成多少段连续的数字. 不大好用线段树合并区间来写. 考虑离线,类似于HH的项链的话,对询问按右端点排序,对于右端点的每一次右移,则对于询问,实际上是求的后 ...
- 【POJ3621】【洛谷2868】Sightseeing Cows(分数规划)
[POJ3621][洛谷2868]Sightseeing Cows(分数规划) 题面 Vjudge 洛谷 大意: 在有向图图中选出一个环,使得这个环的点权\(/\)边权最大 题解 分数规划 二分答案之 ...