代码之家  ›  专栏  ›  技术社区  ›  Ronnie

在HTML中使用条件注释

  •  2
  • Ronnie  · 技术社区  · 16 年前

    在这种情况下,如果答案是“是”。那么,在开发一个站点时,是否经常使用两个单独的样式表来修复bug,例如为IE创建一个样式表,为Firefox、Opera等创建一个样式表?

    提前谢谢。

    5 回复  |  直到 16 年前
        1
  •  5
  •   rmeador    16 年前

    据我所知,条件注释仅受IE支持,在不支持它们的浏览器中,它们会优雅地降级(因为它们看起来像普通注释)。普遍的共识是,如果你使用非标准浏览器功能来对抗另一个非标准浏览器“功能”(即IE中对CSS的蹩脚支持),那么使用非标准浏览器功能是可以的。所以你会发现这是一个非常常见的调整CSS的解决方案。

        2
  •  4
  •   George Stocker NotMe    16 年前

    Internet Explorer的性质(第6版) especially )使一些样式表与IE配合良好,而另一些则不能。对于那些不使用条件注释的用户,您可以使用条件注释来生成仅为IE显示的CSS代码。我必须使用它,因为Internet Explorer(mis)是如何处理CSS下拉菜单的。

    要使我正在处理的网站正确呈现 hover 下拉菜单的功能,我必须实现crosshover.htc文件。以下是我必须使用的代码:

         <!--[if IE]>
    <style type="text/css" media="screen">
    #menu ul li {float: left; width: 100%;}
    </style>
    <![endif]-->
    <!--[if lt IE 7]>
    <style type="text/css" media="screen">
    body {
    behavior: url(http://www.stannscatholicschool.com/csshover.htc);
    font-size: 100%;
    }
    #menu ul li {float: left; width: 100%;}
    #menu ul li a {height: 1%;}
    
    #menu a, #menu h2 {
    font: 100% verdana, tahoma, helvetica, arial, sans-serif;
    }
    
    </style>
    <![endif]-->
    

    如果我不这样做,下拉菜单会分开,无法在InternetExplorer6中导航。

        3
  •  2
  •   Morten Christiansen    16 年前

    我使用有条件的评论来检测我网站的访问者是否使用IE6或更低版本。如果是这种情况,我将加载 IE7.js script ,它克服了这些旧浏览器中的一些错误。还有一个用于模拟IE8支持的脚本。

        4
  •  0
  •   John_    16 年前

    如果这对你来说是一个问题,那么智能感知是一件很棒的事情,它可以帮助我们解决类似的问题。如果不是,那么CTRL+C和CTRL+V可能是下一个最好的选择:)

        5
  •  0
  •   Sneakyness    16 年前

    这是一个伟大的实践!这个 official documentation page of conditional comments

    有条件的注释使开发人员可以轻松地利用Microsoft Internet Explorer 5及更高版本提供的增强功能,同时编写在功能较差的浏览器中正常降级或在Windows Internet Explorer以外的浏览器中正确显示的页面。条件注释是区分特定版本Internet Explorer的级联样式表(CSS)规则的首选方法。

    现在,Internet Explorer是功能最低的浏览器 ,因此,您很可能会使用条件注释来做完全相反的事情,即利用所有其他浏览器提供的增强功能,同时在Microsoft Internet Explorer中编写优雅降级的页面。

    您可以使用条件注释修复不受支持的CSS样式,或从Internet Explorer隐藏代码,如下所示:

    <!--[if !IE]>-->
    <script src="IE_will_never_see_this.js" type="text/javascript" charset="utf-8" ></script>
    <!--<![endif]-->