当使用IE8通过开发工具的浏览器模式功能查看IE7时,我遇到了一个奇怪的CSS问题。当我对外部样式表进行更改,然后在HTML中引用该类时,就像IE7根本无法识别它一样。然而,如果我把同样的样式放在内联中,IE7就会遵守它。以前有人听说过吗?这里有一个简单的例子来帮助说明我的意思:
外部样式表:
.bold {
font-weight:bold;
}
调用HTML:
<p class="bold">My paragraph here</p>
IE7中没有任何更改是有效的,尽管所有其他浏览器都可以。
然而,如果我这样做:
<p style="font-weight:bold;">My paragraph here</p>
IE7看起来很开心。有什么区别?我真的必须以这种方式更改CSS吗?或者有其他解决方法吗?
我很困惑这个问题可能是什么。我不知道开发者工具的浏览器模式是否有一个怪癖,不能像现实版的IE7那样工作,或者这是不是完全不同。我正在使用IE8(我无法在这台政府计算机上升级到IE9),但我听说问题仍然存在,因为我更改了IE7的IE9浏览器模式。
我们使用ColdFusion生成HTML,使用HTML5doctype(),并且我在2个外部样式表引用中添加了一个时间戳参数,因此浏览器每次都必须获取一个新的副本。
任何关于这个谜团的帮助都将不胜感激——谢谢!
======对于@Stano或其他有兴趣重现确切问题的人来说,这里有一个精简版:https://docs.google.com/open?id=0B02DZPpIlMwGSk1VZHRDUHNCTkU(可以单击"文件">"下载"以获取zip)。请注意,在IE7中,"摄影师"很好,因为它有内联样式,但其他人什么都没学到。
关于您的评论,您说得对,这可能是缓存问题,但也可能是该样式表(尽管看起来不是这样)、另一个样式表或无效HTML的问题。
我想纠正的一件事是,HTML元素中的class
属性不会调用CSS,因为我认为这可能会影响你对CSS和HTML交互方式的理解。相反,CSS规则告诉浏览器代理如何呈现具有特定属性的内容。这就是为什么我们能够使用元素ID、名称、组名、类和其他值来识别要应用哪个类的元素
我之所以提到这一点,是因为如果您有无效的HTML(缺少结束标记、缺少箭头等),它可能会做各种奇怪的事情。几天前,它帮助我解决了一个问题,一个放错地方的标签实际上导致我的脚本在我的一个页面上循环。
请稍等片刻,使用W3C标记验证器验证您的HTML。