CSS水平菜单 - 为什么IE中只有1px边框/空格?

时间:2014-02-21 21:18:52

标签: html css internet-explorer menu html-lists

我有一个带悬停效果的简单水平菜单。 它在Chrome / Firefox中显示得很好,但在IE11中,它们之间有一个1px的边框。

将鼠标悬停在左侧链接上时可以看到它:http://jsfiddle.net/cMeE5/

以下是截图:IE11 Screenshot http://users.telenet.be/mhd/ie11.png

这个垂直边框并不坏,但是同样的边框总是显示在菜单项的底部(但它不会在JSFiddle中重现)。

我也尝试添加完整的CSS重置,但这不会改变任何内容。

这是JSFiddle上的代码:

<div id="navcontainer">
    <div id="midnav">
        <ul>
            <li><a href="#">Link A</a></li>
            <li class="activesub"><a href="#">Link B</a></li>
        </ul>       
    </div>
</div>
<div id="maincontainer">
    <div id="main">
        <h1>Test</h1>
    </div>
</div>

CSS:

* { margin: 0; padding: 0;}
html { min-height: 100%; height: 100%; margin-bottom: 1px; overflow-y: scroll;}
body {
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    font-size: 0.875em;
    background-color: #ebebeb;
    color: black;
    height: 100%;
}
a, a:active, a:hover, a:visited, a:link  {
  text-decoration:  none;
  font-weight:      none;
  background-color: none;
  color:       inherit;
} 
/********************/
/*** SUBNAVIGATIE ***/
/********************/
#navcontainer {
    width: 100%;
    background-color: #464646;
}
#midnav {
    width: 1000px;
    margin: 0 auto;
    color: white;
    padding-top: 0.3em;
}
#midnav ul {
    list-style-type: none;
    display: table;
}
#midnav li {
    display: table-cell;
    -moz-border-radius-topleft: 7px;
        -webkit-border-top-left-radius: 7px;
    border-top-left-radius: 7px;
    -moz-border-radius-topright: 7px;
        -webkit-border-top-right-radius: 7px;
    border-top-right-radius: 7px;

    -webkit-transition: all 0,1s ease;
        -moz-transition: all 0,1s ease;
        -o-transition: all 0,1s ease;
        -ms-transition: all 0,1s ease;
        transition: all 0,1s ease;
}
#midnav a {
    display: block;
        padding: 0.3em 1em 0.5em 1em;
}
.activesub, #midnav li:hover {
    color: #464646;
    background-color: #ebebeb;
}

/********************/
/*** MAIN CONTENT ***/
/********************/
#maincontainer {
    width: 100%;
    background-color: #ebebeb;
}
#main {
    width: 1000px;
    margin: 0 auto;
    color: #464646;
}

#maincontainer p {
    margin-bottom: 1em;
    margin-top: 1em;
}

3 个答案:

答案 0 :(得分:1)

我仍然不确定导致IE问题的原因,但底部1px空间的解决方案是向LI元素添加1px边框(条件IE CSS

#midnav li {
    border-bottom: 1px solid #464646;
}

#midnav .activesub, #midnav li:hover {
    border-bottom: 1px solid #ebebeb;
}

答案 1 :(得分:1)

您可以添加负底边距以修复IE的错误计算..

margin-bottom:-1px;

答案 2 :(得分:0)

该行来自navcontainer div的背景颜色。问题的根源可能是由于浏览器之间的字体渲染不同(特别是考虑到0.875em的奇数缩放)。 padding-top div的midnav属性为0.3em,大小基于字体呈现。例如,将此值更改为6px,可以对齐midnav并消除问题:

#midnav {
    width: 1000px;
    margin: 0 auto;
    color: white;
    padding-top: 6px;
}

您还可以在禁用正文的font-family属性时看到差异。 IMO最好在对齐div时坚持使用像素。