/**
* @description IE6~9下,页面的样式规则有如下限制:
* 1)link+style元素的个数不能大于31个;
* 2)单个css文件的rule条数,不能大于4095条;
* 3)<pre>@import</pre> 命令不能嵌套超过4层。
*
* 文件处理了动态加载 link/style元素的情况,但不能处理页面一开始就已经违反了限制1的情况。
* @author shawnwu
* @date 2013-09-03
*/
(function(win){
var doc = document,
head = document.getElementsByTagName("head")[0],
linkEls = doc.getElementsByTagName("link"),
styleEls = doc.getElementsByTagName("style"),
poorIE = /MSIE ([^;]+)/.test(navigator.userAgent) && parseInt(RegExp.$1,10) < 10,
IMPORT_ID = "importLink_ID",
APPEND_ID = "appendStyle_ID",
/**
* IE6~9 的BUG:link+style元素的个数,不能大于31个。
*/
LIMIT = 31,
// 至少保留两个位置给我们定义的style元素:一个用于import,一个用于append
maxNum = LIMIT - 2,
isLimited = false;
/**
* @description 创建添加一个LINK元素
* @param {String} url 样式链接
* @return link元素
*/
function createLinkEl(url){
var link = doc.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href = url;
head.appendChild(link);
return link;
}
/**
* @description 创建添加一个style元素
* @param {String} str 样式规则
* @param {String} id 元素ID
* @return style元素
*/
function createStyleEl(str,id){
var el = doc.createElement("style");
el.type = "text/css";
if(id){
el.id = id;
}
if(str){
if(poorIE){
el.styleSheet.cssText = str; //IE
}else{
el.appendChild(document.createTextNode(str));
}
}
head.appendChild(el);
return el;
}
function checkLimit(){
if(!isLimited && poorIE){
if(linkEls.length + styleEls.length >= maxNum){
isLimited = true;
}
}
return isLimited;
}
function loadStyle(url){
if(checkLimit()){
doImportStyle(url);
}else{
doLoadStyle(url);
}
}
function loadStyleStr(str){
if(checkLimit()){
doAppendStr(str);
}else{
doLoadStr(str);
}
}
function doLoadStr(str){
createStyleEl(str);
}
function doAppendStr(str){
var el = doc.getElementById(APPEND_ID);
if(!el){
createStyleEl(str,APPEND_ID);
}else{
el.styleSheet.cssText = el.styleSheet.cssText + str;
}
}
function doImportStyle(url){
var el = doc.getElementById(IMPORT_ID),
styleEl = null;
if(!el){
styleEl = createStyleEl(null,IMPORT_ID);
styleEl.styleSheet.addImport(url);
}else{
el.styleSheet.addImport(url);
}
}
function doLoadStyle(url){
createLinkEl(url)
}
//export
win.cssUtil = {
//加载外链css
loadStyle: loadStyle,
//直接添加样式规则
loadStyleStr: loadStyleStr
};
})(window);
分享到:
相关推荐
用js动态添加html元素,以及属性的简单实例 function test(){ //创建节点 var lswt_2=document.createElement("div"); //设置节点id lswt_2.id='lswtColse'; //设置节点属性 lswt_2.style.width='11px'; lswt_2....
**javaScript动态添加Li元素**</title> <style type=text/css> ul li{list-style:none;display:block;text-align:left;} ul li span{display:inline-block;margin-top:5px;margin-right:35px;} </...
如下所示: <table class=exhibit_table xss=removed> 上传计划单 <td xss=removed><input type=file name=file style=display:inline;...button type=button class=btn btn-success btn-xs style=bord
它可以为结果html元素添加样式。安装 npm install markdown-it-style --save-dev或者,如果使用纱线 yarn add -D markdown-it-style用 var Markdown = require('markdown-it')var markdowStyle = require('markdown...
select class="dept-name-show" style="width: 70%;"> </select> 二、编写js语句: [removed] $(function () { var dname = $(".dept-name-show").eq(0);//选定<select>标签 var url = "${...
CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题 外部样式表可以极大提高工作效率 外部样式表通常...
vue实例:添加删除元素r</title> <style type="text/css"> .form-group{ margin:10px; } .form-group>label{ display: inline-block; width: 5rem; text-align: right; } </style> <...
通常我们会遇到选中某个条件...Jquery动态添加及删除页面节点</title> [removed][removed]<!–引用jqurey库文件–> <style> .container{ width:1000px; margin:0 auto;} .top{ height:25px; line-heigh
水母元素动态样式介绍通过YML文件将任意数量的样式下拉字段添加到任意元素。 样式按位置分组。 这使您可以将CSS类插入模板中的不同位置,而不仅仅是保持容器。 当您需要提供更改网格中的列数的功能时,可以在模板中...
2、支持所有元素和控件中的经典绘图、系统主题和VCL样式 3、控件的集合,它基于GDI+矢量图形(控件可以为不同的元素自动使用样式或自定义颜色) 4、特殊组件,添加按钮,标签在数控领域的风格形式和改善形式的...
用jquery的时候你会发现,页面渲染后动态生成的dom,在生成之前的代码是没办法取到相应对象的,必须重新获取.但是vue基于数据绑定的特性让它能生成的时候直接绑定数据。 html: <input type=text v-model...
为定义好的css样式可以调用元素的css方法添加样式 $(“span”).css(“css属性名”,”属性值”) 如 $(“span”).css(“color”,”red”) 将标签为span的字体都设为红色的 $(“#id”) $(“span”) 如果是定义好的...
js给元素添加多项样式,浏览器全兼容示例写法: 测试3 [removed] var obj=document.getElementById("test"); var oldStyle=obj.style.cssText; alert(oldStyle); obj.style.cssText="border:2px red solid;...
余烬风格修饰符 此插件提供了{{style}}元素修饰符,用于设置元素的样式。 这允许设置元素的自定义CSS,而无需style-src-attr: "unsafe-inline" 。兼容性Ember.js v3.4或更高版本Ember CLI v2.13或更高版本Node.js ...
向网站添加样式html元素 @param styleidentifier:字符串,定义样式元素的ID,以标识样式以供以后使用 @param选择器:字符串,有效CSS选择器 @param属性:任意,带有花括号的css属性的对象,例如:{display:none} ...
我就废话不多说了,大家还是直接看代码吧~ <!--此div的高度取屏幕可视区域的高度--> <h5>{{ msg }} [removed] export default { data() { return { msg: Welcome to Your Vue.js App, ... /
a)在页面设置元素,并使用document.querySelector ("div"),获取div元素。 b)给元素添加onclick ()单击事件。 c)处理onclick函数逻辑 d)通过style属性修改元素的背景色和宽度;
在所编辑的页面,需要添加右键菜单的元素,绑定contextmenu事件,如下: v-for="item in resourceList" :key="item.id" @click="handleClickFolder(item)" @contextmenu.prevent="openMenu($event,item)" > ...
它支持静态设置控件使用主题元素的方式——layout的xml中定义控件时使用,也支持程序动态设置——主题控件辅助类来动态改变主题元素。 目前已经支持Style中设置attrRes来支持多主题控件属性切换。 可以很容易地在...