如何调整CSS以在IE 6中正确显示?

时间:2015-10-23 06:33:02

标签: html css internet-explorer internet-explorer-6

我有以下HTML + CSS,可以在IE 6作为Web浏览器的少数旧版Windows XP上显示。在较新的浏览器上,它应如下所示:

enter image description here

但IE 6看起来像这样:

enter image description here

所以我很好奇是否可以尝试为IE 6修复此问题?

Here's a fiddle显示代码。

使用的图像是这样的: enter image description here

HTML:

<span id="lbl01">User Commands:</span>
<div class="divSmBtns">
<a href="#" id="idBtn" draggable="false" class="smtbBtnCopy smtbBtn" title="whatever"></a>
</div>

的CSS:

.divSmBtns{
    margin: -10px 10px 0px 8px;
    padding: 0px;
    display: inline-table;
}
.smtbBtnCopy{
    background-image: url(copy.gif);
}
.smtbBtn{
    width: 12px;
    height: 10px;
    margin: 0px;
    padding: 1px;
    background-size: 6px;
    background-repeat: no-repeat;
    background-color: transparent;
    border: 1px solid transparent;
    display: inline-block;
    background-position: center center;
    cursor: pointer;
    box-sizing: border-box;
    outline: none;
}
.smtbBtn:hover{
    border: 1px solid #ccc;
}
.smtbBtn:active{
    background-size: 5px;
}

1 个答案:

答案 0 :(得分:3)

为了支持IE6,您需要对标记做出一些妥协,并保持简单。

正如我在评论中所说,有两个问题。

    IE6不支持
  1. display: inline-table。使用display: inline;
  2. IE6不支持
  3. background-size。使用img代替背景图片。
  4. 一个非常简单的解决方案是删除div包裹a,然后使用a打包img。像这样:

    <span id="...">User Commands:</span>
    <a href="#" id="..." class="smtbBtn " title="...">
        <img src='...' alt='...' />
    </a>
    

    然后,将该图片用于您的悬停互动:

    .smtbBtn { vertical-align: middle; }
    .smtbBtn img { height: 14px; border: 1px solid transparent; }
    .smtbBtn:hover img, .smtbBtn:active img { 
        border: 1px solid #f00; 
    }
    

    这将适用于所有浏览器,包括现代浏览器以及IE返回IE5。

    演示小提琴:https://jsfiddle.net/abhitalks/mcgLkdc9/6/embedded/result/

    <强>段:

    &#13;
    &#13;
    .smtbBtn { vertical-align: middle; }
    .smtbBtn img { height: 14px; border: 1px solid transparent; }
    .smtbBtn:hover img, .smtbBtn:active img { 
        border: 1px solid #f00; 
    }
    &#13;
    <span id="lbl01">User Commands:</span>
    <a href="#" id="idBtn" draggable="false" class="smtbBtnCopy smtbBtn" title="Copy">
        <img src='http://i.stack.imgur.com/6cALN.gif' alt='' />
    </a>
    &#13;
    &#13;
    &#13;

    编辑:

    正如所指出的那样IE6不支持transparent的{​​{1}},您将不得不求助于黑客攻击或条件评论(,如其他答案所示

    1. Hack :您可以通过border-color(下划线)为属性添加前缀,该内容仅由IE6识别并被其他浏览器忽略。类似地,前缀为_(星号)只能由IE7识别。
    2. CSS:

      *

      小提琴2:https://jsfiddle.net/abhitalks/mcgLkdc9/8/embedded/result/

      1. 条件评论 :您可以使用条件评论来注入HTML,例如,在您的情况下,.smtbBtn img { height: 14px; border: 1px solid transparent; } .smtbBtn img { _border-color: pink; _filter: chroma(color=pink); } 标记带有针对这些样式的特定类。请记住条件注释用于HTML而不是CSS。
      2. 标记:

        img

        CSS:

        <a href="#" id="idBtn" draggable="false" class="smtbBtnCopy smtbBtn" title="Copy">
            <!--[if IE 6]>
                <img src='http://i.stack.imgur.com/6cALN.gif' class='ie6img' alt='' />
            <![endif]-->
            <!--[if gte IE 7]>
                <img src='http://i.stack.imgur.com/6cALN.gif' alt='' />
            <![endif]-->
            <!--[if !(IE)]><!-->
                <img src='http://i.stack.imgur.com/6cALN.gif' alt='' />
            <!--<![endif]-->
        </a>
        

        小提琴3:https://jsfiddle.net/abhitalks/a9f80cqf/4/embedded/result/

        注意:我没有在IE6中测试过上述两种方法。我在IE11中使用开发人员工具模拟。这意味着,您必须根据自己的经验进行调整。