IE 8对每个页面的样式表数量有限制吗?

40

一篇有关CSS的回答中,一位用户说:

据称,Internet Explorer在每个文件中有4096个CSS规则的限制。参考文献

此外,它还有一个限制,即您可以在单个文档中嵌入的样式表数量。我认为是20。

虽然MSDN上的参考资料似乎证实了这一点(并且一篇博客文章也证实了IE7中的情况),但这对于IE8仍然适用吗?


7
如果你在一个页面上有20个不同的样式表,那么你做错了什么! - Oded
4
放松点,这不是生死攸关的事情。 - Piskvor left the building
2
@Oded - 1个重置,11个布局(打印,移动,屏幕,ie特定,ie7特定,ie6特定,iphone,ipad,iphone4,纵向和横向),1个排版,3个颜色主题=总共16个。是的,20似乎有点高... - Franci Penov
6
这绝非“荒谬”的想法。听起来您正在考虑各种布局方案,并为每种布局提供几种颜色搭配,这是相当常见的做法。这是一个完全合理的方法。我不知道IE的内部限制是什么,但无论它是什么,它只是定义了一个设计约束,而不是某种过度的普遍法则。 - user164226
15
超过31个样式表的正当理由:在开发模式下,我有许多小型易于调试的样式表,它们被编译成一个文件用于生产环境。通过Rails中的资源管道,这很容易做到并使关注点得以很好地分离。不幸的是,对于使用IE进行开发模式测试而言,这会让情况比IE的其他怪癖更加困难。 - Marcus
显示剩余8条评论
6个回答

55

是的,IE8(甚至IE9)每个页面的样式表数量限制为31个。

Telerik有一篇文章和一个测试页面,展示了这个问题。根据同一文章中的评论,每个文件限制在4096条规则已被标记为Microsoft Connect中的“不会修复”,但我无法验证该信息。


1
不修复?哦,好吧...这似乎是微软的边缘情况,对我来说则是个特例。那我会尝试一些服务器端的CSS合并/压缩工具。 - Piskvor left the building
(我知道合并文件不会解决“4096规则”问题,但在很长一段时间内我都不会达到那个限制) - Piskvor left the building
3
微软表示他们没有计划修复此问题,详情请见:https://connect.microsoft.com/IE/feedback/details/542903/ie9-platform-preview-does-not-load-more-than-4095-css-selectors-on-a-page - Tor-Erik
2
如果您正在使用Rails,可以通过将以下内容添加到config/environments/development.rb文件中来合并CSS文件以解决此问题:config.assets.debug = false - Ryan
微软对于Internet Explorer多年来所受到的所有批评都是应得的。这真是一些绝对的胡说八道。我已经花费了无数个小时来调试这个烂东西,只有一个“SCRIPT87:无效参数。”错误信息,没有文件名和行号可以开始调试。这个缺失的文件名和行号是因为Dojo库使用了Deferreds,它吞噬了异常,并且IE9(唯一一个出现这种难以调试的错误的浏览器)的糟糕的调试器不允许你捕获已捕获的异常。所以我不得不手动剥离Dojo中的所有try-catch,才能找到这个问题。 - joonas.fi

5

这个帖子 表明每个页面/CSS文件有31个CSS引用的限制,但是您可以通过使用@import和嵌套层次结构的CSS文件来实现更多。

更多信息 来自Telerik博客,更清楚地说明这适用于IE8。


当我使用@import时,是否存在关于浏览器缓存的问题? - padis
@padis 听起来这应该是一个单独的问题。然而,http://www.stevesouders.com/blog/2009/04/09/dont-use-import/ 给出了一些关于 @import 性能影响的信息。假设 CSS 是相对静态的,最好在可能的情况下动态地将您的 CSS 聚合到一个单独的虚拟文件中。 - Daniel Renshaw

4

Microsoft声称限制为30,但根据Telerik的说法,限制实际上是31。Telerik博客还提到了每个文件4095个选择器的限制。


我经常在30分钟左右被IE切断,所以微软说的话都是胡扯:D - DrCord

3

感谢上述测试脚本,我刚刚确认了这个限制(显然是30),即使在Internet Explorer 9中仍然存在!


0
我正在建立一个网站,遇到了这个问题。这个问题让我感到非常烦恼,直到我的同事指出了这个31个CSS文件的问题。经过调查,我发现这个问题比想象中要复杂,因为IE8似乎只加载了一些样式表中的样式,而没有加载全部。它忽略了媒体查询和链接类,就像在Quirks模式下一样——尽管它并不处于Quirks模式下,并且这两个都在同一个CSS文件中,其他CSS也在使用中。当我将CSS文件合并成一个文件后,一切都正常了。总之,我只是想指出,这个31个限制似乎也会触发类似Quirks模式的东西。

0
如果您使用NPM获取Bless安装,它会为您解决问题。

不知道那两个是什么;我猜它们是一些将单独的样式表编译成一个的系统?那确实会有所帮助。 - Piskvor left the building

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接