IE中网页引入CSS样式表的限制

分类: CSS   出处:iocblog整理  更新时间:2009-04-12   添加到收藏  

  首先介绍一下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(){
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 = [];

[1] [2] 下一页



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。