IE中网页引入CSS样式表的限制
首先介绍一下html文档与css 的关联常见有4种方式: 1、使用link标记 <link rel="stylesheet" type="text/css" href="sheet.css" /> 2、使用style元素 <style type="text/css"> body{background:#fff;} h1{font-size:2em;} </style> 3、使用@import指令 <style type="text/css"> @import url(sheet1.css); @import "sheet2.css"; </style> 4、使用style属性的内联样式(inline style) <p style="color:#f00;">这是红色的字</p> 在实际应用中,使用style属性的内联样式是不推荐使用的,xhtml1.1已经将其标准为不建议使用,原因很简单这种方式不比font标记强多少,削弱了css集中控制整个文档外观的优点。 前3种方式利用了link标记和style标记,在ie(包括ie6、ie7和ie8 beta1)中有如下限制: ◆ 文档中只有前31个link或style标记关联的css能够应用。 从第32个开始,其标记关联的css都将失效。ie的官方文档all style tags after the first 30 style tags on an html page are not applied in internet explorer也提及这个限制,包括在使用.xsl的.xml文件也有这个限制。但是似乎写错了数量。请在ie看: ◆ 一个style标记只有前31次@import指令有效应用。 从第32个@import指令开始忽略。 ◆ 一个css文件只有前31次@import指令有效应用。 从第31个@import指令开始忽略。 ◆ 一个css文件的不能超过288kb? 这个消息来自internet explorer css file size limit。 ie对css的限制在绝大部分情况下是不会遇到的,即使遇到最佳的解决方案也应该是手动或者通过后端程序对css文件和响应的标记进行合并,最小化的http请求数是优化页面呈现的第一原则。 在ie中,可以通过document.stylesheets对象(firefox、opera9和safari3.1都支持)修改内联和嵌入样式的值。该对象仅在文档包含style或link元素时可用,其实用document.stylesheets.length就可以看出ie下这个值最大是31。下面是利用javascript来合并link和style标记来解决ie下的限制: var fnmergestylesheet = function(){
文章整理:iocblog
if(!document.stylesheets){
return;
}
var asheet = document.stylesheets,
astyle = document.getelementsbytagname('style'),
alink = document.getelementsbytagname('link');
if(astyle.length + alink.length < 32 !asheet[0].csstext){
//document.stylesheets.csstext只有ie支持
return;
}
var acsstext = [],aclonelink = [];
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。