【问题标题】:The Appearance of li is distorted in IE8 while in mozilla firefox it is correctli 的外观在 IE8 中失真,而在 Mozilla firefox 中是正确的
【发布时间】:2013-05-30 09:00:18
【问题描述】:

下面是一段CSS

#innerHeaders 
{
    background-color: #026062;
    height: 33px;
    left: 269px;
    position: relative;
    top: 17px;
    width: 755px;
}

ul li
{
    display:inline-block;
    color:#FFF;
    font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
    font-size:14px;
    font-weight:bold;
    text-align:center;
    vertical-align:middle; 
}

ul li a
{
    text-decoration:none;
    color:#FFF;
    font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
    font-size:14px;
    font-weight:bold;
    text-align:center;
    vertical-align:middle;
    position:absolute;
    top: 7px;
    left:45.5px;
}

ul li a:hover
{
    text-decoration:underline;  
}

.topBtns
{
    background-image:url(../images/topBtnsBg.png);
    width:128px;
    height:33px;
}

以下是 HTML 代码

<div id="innerHeaders">
    <ul>
        <li id="homeBtn" class="topBtns"><a href="index.html">Home</a></li>
        <li id="aboutBtn" class="topBtns"><a href="#" onClick="aboutData();">About</a></li>
        <li id="feedBackBtn" class="topBtns"><a href="xyz@abc.com">Feedback</a></li>
    </ul>
</div>

上面的 li 在 Firefox 浏览器中显示为内嵌的 Home About 和 Feedback 按钮,但在 IE8 中 Home About 和 Feedback 相互重叠。

以下是各自的截图

【问题讨论】:

  • 我的猜测是 IE8 由于缺少文档类型而处于怪异模式。见stackoverflow.com/questions/9110646/…
  • 我之前已经看到并尝试过,但同样无济于事。您能否详细说明如何使用 ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow" target="_blank">w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 因为即使这样也行不通!
  • 您只需将它放在页面的最顶部,在打开的&lt;html&gt; 标记之前。 &lt;!DOCTYPE html&gt; 也同样有效(这是 HTML 5 的文档类型)。但是除了缺少可以触发怪癖模式的文档类型之外,还有其他的事情。请参阅this answer 了解如何检查浏览器是否处于怪癖模式。

标签: css html internet-explorer html-lists


【解决方案1】:

在“li”中,我刚刚添加了float (*float:left;),以便它在ie7 中正确显示。在“ul li a”下,您必须删除“position:absolute;”并且只需添加行高(line-height:34px;)。希望它在您想要的所有浏览器中正确显示。

ul li
   {
    display:inline-block;
    *float:left;
    color:#FFF;
    font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
    font-size:14px;
    font-weight:bold;
    text-align:center;
    vertical-align:middle;
   }

    ul li a
    {
    text-decoration:none;
    color:#FFF;
    font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
    font-size:14px;
    font-weight:bold;
    text-align:center;
    vertical-align:middle;
    /*position:absolute;*/
    top: 7px;
    left:45.5px;
    line-height:34px;
    }

【讨论】:

    【解决方案2】:

    您的 CSS 不正确。 通常 IE 的问题是您的父元素没有布局。 这被称为 haslayout 问题。 您可以在本文中了解更多信息:http://reference.sitepoint.com/css/haslayout

    尝试定义所有父元素的高度和宽度。 绝对值也可能导致问题。 也许你可以解释更多关于你想要完成的事情。

    【讨论】:

    • 据我所知,hasLayout 在 IE 6 中是一个问题,在 IE 7 中更是如此,之后就消失了。
    【解决方案3】:

    您的 css 文件中存在一些已纠正的错误。 jsFiddle url 也是here.

    ul li
           {
            display:inline-block;
            *float:left;
            color:#FFF;
            font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
            font-size:14px;
            font-weight:bold;
            text-align:center;
            vertical-align:middle;
           }
    
            ul li a
            {
            text-decoration:none;
            color:#FFF;
            font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
            font-size:14px;
            font-weight:bold;
            text-align:center;
            vertical-align:middle;
            /*position:absolute;*/
            top: 7px;
            left:45.5px;
            }
    

    【讨论】:

    • 对更改的简短描述/解释可能会有所帮助。这只是一个代码转储,很难看出问题出在哪里。
    • 位置:absolute 已经在 ul li a 中被注释掉了,float:left 被添加在 ul li 中但是这不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多