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

时间:2013-08-08 15:13:02

标签: css border diagonal

我想在菜单元素之间添加一个白色间隙,但我遇到了一个奇怪的问题。看到这个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;
}

我无法弄清楚为什么边界对角线在左边。有人知道吗?

2 个答案:

答案 0 :(得分:6)

Borders这样聚集在一起:

||
||______
|/______

您应该使用margin-bottom代替border-bottom fiddle

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;
}

如果您需要白线,请考虑using :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;
}

答案 1 :(得分:0)

这是因为它正在绘制两个边界的角落。尝试将底部边框更改为白色以外的其他内容,您会更清楚地看到它正在做什么。

要摆脱这种效果,你需要摆脱底部边界。

如果您需要底部边框当前给您的间隙,则可以改为使用padding-bottommargin-bottom