奇怪的CSS行为-对角线为什么边界边缘不直



我想在菜单元素之间添加一个白色间隙,但遇到了一个奇怪的问题。看看这个jfiddle:http://jsfiddle.net/ERYat/1/

这是CSS代码:

/* a styling */
ul#menu-menu-services a {
    display: block;
    font-size: 20px;
    color: #000;
    text-decoration: none;
    padding: 5px;
    border-bottom: 2px solid #fff;
    border-left-style: solid;
    border-left-width: 3px;
    border-left-color: #000;
}
/* li fix */
ul#menu-menu-services li {
    margin: 0;
    padding: 0;
    border: none;
}
/* Sub Menu */
ul#menu-menu-services li ul.sub-menu {
    display: block;
    margin-left: 0px;
}
ul#menu-menu-services li ul.sub-menu li a {
    padding-left: 15px;
    font-size: 14px;
}

我不明白为什么左边的边界是对角线。有人知道吗?

边框组合如下:

||
||______
|/______

你应该使用margin-bottom而不是border-bottom小提琴:

ul#menu-menu-services a {
display: block;
font-family: 'Droid Sans', arial, serif;
font-size: 20px;
color: #000;
text-decoration: none;
padding: 5px;
margin-bottom: 2px;
border-left-style: solid;
border-left-width: 3px;
border-left-color: #000;
}

如果你需要一条白线,可以考虑使用:after:

ul#menu-menu-services a { position: relative; }
ul#menu-menu-services a:after {
    content: '';
    width: 100%;
    position: absolute;
    height: 2px;
    background: #fff;
    left: 0;
    bottom: -2px;
}

这是因为它绘制了两个边界的角。试着把你的下边框改成白色以外的颜色,你会更清楚地看到它在做什么。

为了消除这种影响,你需要消除底部边界。

如果您需要底部边界当前提供的间隙,可以使用padding-bottommargin-bottom

最新更新