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

在css中,如果一行是IE6或IE7,如何使它只执行一行

  •  1
  • anthonypliu  · 技术社区  · 15 年前

    我有这个密码:

    #left-nav #left{
      width:100px;
      height: 99px;
      float:left;
      border-bottom: 1px solid #344a53;
      margin-top:-1px;
    }
    

    我只想做 margin-top:-1px margin-top: -1px 因为上面的div向下1个像素。

    <div id="header"></div>
    <div id="container">
    <div id="left"></div>
    <div id="right"></div>
    </div>
    

    由于某些原因,左、右div距离头部只有1个像素,但容器仍然完美地接触到它。

    4 回复  |  直到 15 年前
        1
  •  3
  •   mctom987    15 年前

    快速简便的方法是使用IE条件句。

    <!--[if IE 6]>
     <link type="text/css" rel="stylesheet" href="/ie6.css" />
    <![endif]-->
    

    你也可以使用

    <!--[if IE lte 7]>
    

    如果IE是版本7或更低。

    看到了吗 http://www.quirksmode.org/css/condcom.html 了解更多信息

        2
  •  2
  •   Pat    15 年前

    conditional comments 要将CSS定位到IE6/7:

    <!--[if IE 6]><link rel="stylesheet"  type="text/css" media="all" href="ie.css" /><![endif]-->
    <!--[if IE 7]><link rel="stylesheet"  type="text/css" media="all" href="ie.css" /><![endif]-->
    

    然后在ie.css中你会有这样的规则:

    #left-nav #left{
        margin-top: 0;
    }
    

    您必须确保ie.css文件包含在主css文件之后,以便它覆盖 margin-top: -1px .

    #left-nav #left{
        position: relative;
        top: -1px;
    }
    
        3
  •  1
  •   Simon Lieschke    15 年前

    回答标题中的问题时,可以使用 star hack

    这种方法的优点是不需要记住在包含CSS的每个页面中使用条件注释。

        4
  •  1
  •   bpeterson76    15 年前

    黑客是有用的,但是为什么不重新考虑一下你已经做了什么来避免它们呢?使用带有自动填充和定义空间的框架(如Blueprint、YUI或960网格)可以极大地帮助和避免黑客攻击……尤其是Blueprint和YUI的浏览器“重置”使用这些简单、直接的css时,我真的记不得上一次使用黑客攻击是什么时候了——肯定已经一年多了。

    如果我是个赌徒,我会说在你提到的并列例子中,你的浮点数有问题。尝试一个简单的浮动复位测试:

    .clear {
      clear: both;
    }
    

    <div class="clear"></div>
    

    如果你注意到任何变化,这是一个浮动问题。很常见的问题。