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
动态创建对象 在前面节中,我们先了解了反射,然后利用反射查看了类型信息,并学习了如何创建自定义特性,并利用反射来遍历它.可以说,前面三节,我们学习的都是反射是什么,在接下来的章节中,我们将学习反射可以 ...
随机推荐
- 2.安装hdfs yarn
下载hadoop压缩包设置hadoop环境变量设置hdfs环境变量设置yarn环境变量设置mapreduce环境变量修改hadoop配置设置core-site.xml设置hdfs-site.xml设置 ...
- [leetcode-658-Find K Closest Elements]
Given a sorted array, two integers k and x, find the k closest elements to x in the array. The resul ...
- Appium基础环境搭建(windows)---基于python
1 JDK安装 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装注意:安装 ...
- 【web前端开发】浏览器兼容性处理大全
1.居中问题 div里的内容,IE默认为居中,而FF默认为左对齐,可以尝试增加代码margin: 0 auto; 2.高度问题 两上下排列或嵌套的div,上面的div设置高度(height),如果di ...
- 学霸系统PipeLine功能规格说明书
学霸系统PipeLine功能规格说明书共分为以下三部分: 1.产品面向用户群体 2.用户使用说明 3.产品功能具体实现 1.产品面向用户群体 我们这组的项目并不是传统意义上能发布并进行展示的项目,因此 ...
- 《剑指offer》---两个栈实现队列
本文算法使用python3实现 1.题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 时间限制:1s:空间限制:32768K 2.思路描述: ...
- iOS- 多线程技术的概述及优点
1.概述 在iOS开发中: •耗时操作,例如网络图片.视频.歌曲.书籍等资源下载 •游戏中的声音播放 我们可以利用多线程: •充分发挥多核处理器的优势,并发(同时执行)执行任务让系统运行的更快.更 ...
- 3ds Max学习日记(三)
今天把第三章搞完了,学的是样条线(splines)建模的一些操作.不过实习又有新任务了,得去研究一下如何将单张图片转化为三维模型(我擦,这神马操作),所以可能没有那么多时间愉快地与3ds max玩 ...
- c#控件的name和text属性有什么不同?
text 是显示出来,供用户和自己编辑方便使用的,name 属性是编辑代码用的. 比如要读取一个text栏的内容 取name='txtName' text='姓名'代码段需要写的是, txtName. ...
- Flink中的数据传输与背压
一图道尽心酸: 大的原理,上游的task产生数据后,会写在本地的缓存中,然后通知JM自己的数据已经好了,JM通知下游的Task去拉取数据,下游的Task然后去上游的Task拉取数据,形成链条. 但是在 ...