*宽度IE-hack导致的验证错误

时间:2013-02-19 22:34:44

标签: css w3c-validation

我正在使用此工具验证CSS文件:http://jigsaw.w3.org/css-validator/

我的CSS文件中有23个错误,超过一半看起来像这样:

Line 46  #left_navigation    Parse Error ;*width: 175px;

实际的CSS看起来像这样:

#left_navigation {
    float: left;
    width: 165px;
    *width: 175px;
    margin:0px;
    padding:12px 5px 5px 5px;
}

错误是由星号设置宽度引起的。我最初没有把它放在这里,但很明显它需要处理IE中的一些显示问题。

所以我的问题是:我是否关心这些错误?还有其他/更好的方法吗?我不能把它拿掉,因为当我们这样做时,IE中会发生不好的事情。

3 个答案:

答案 0 :(得分:3)

  

我是否关心这些错误?

我不确定。你呢?

但还有另一种选择。确保您的网页包含以下内容:

<!--[if lt IE 7 ]> <html class="ie ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]>    <html class="ie ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]>    <html class="ie ie8" lang="en"> <![endif]-->
<!--[if IE 9 ]>    <html class="ie ie9" lang="en"> <![endif]-->
<!--[if gt IE 9]><!--><html><!--<![endif]-->

然后,您可以将IEx特定样式与自定义选择器一起使用,例如:

.ie7 #left_navigation { width: 175px; }

不再需要*prop: value; hack。

除了上述方法之外,您还可以使用IE条件来包含单独的/附加的或替代的IE样式表。

答案 1 :(得分:0)

任何浏览器都可以正常工作。如果由于某种原因,对于经过验证的CSS来说,只要忽略它就不是必需的。

硬解决方案是让它在所有浏览器上都能正常工作。根据所需的向后兼容性,它可能很难。

还有类似(Modernizr)[http://modernizr.com/]的东西可以帮助你完成任务,如:

#left_navigation.ie{
/* IE specific code */
}

通过Jeoren发布了准备好的解决方案:)

答案 2 :(得分:0)

如果你想找一个有效的CSS hack , 以下允许您包含一个解决方案,无需包含整个modernizr脚本或通过添加IE条件注释来更改HTML(pre-)标题:

对于IE4-6和

* html #left_navigation { width: 175px; } IE7的

*+html #left_navigation { width: 175px; }

请参阅http://en.wikipedia.org/wiki/CSS_filter#Star_hack