CSS:悬停 <li> 时更改背景,颜色未填充 space

CSS: Change background on hover of <li>, color not filling the space

我在让这个正在进行的代码播放器看起来正确时遇到了问题:

http://invigorateme.net/viperbox.html

当我将鼠标悬停在列表项(列表项是顶部的四个选项卡)上时,背景会发生变化,但不会填充两侧的 space。我试图从另一个源代码中学习,但我无法完全正确地进行调整,并且仍然存在问题。

问题:当您将鼠标悬停在列表项上时,我怎样才能做到这一点,背景会发生变化并适合背景?

如果您访问我的站点 link,当您将鼠标悬停在这些元素之一上时,您就会明白我的意思。它只是改变了颜色,但并不像我预期的那样。

这是它背后的相关CSS,让我知道它是否可怕以及我可以做得更好,我还在学习中:

    #codetabs{
        width: 197px;
        height: 30px;
        position: relative;
        top: 8px;
        background-color: white;
        border: 2px solid #B7B7B7;
        border-radius: 10px;
        margin: 0px auto;
        padding: 0;
        }

    #codetabs ul{
        height: 50px;
        position: relative;
        margin: 0px auto;
        padding-left: 5px;
        }

    #codetabs li{
        text-align: center;
        float: left;
        height: 23px;
        list-style: none;
        margin: 0px;
        padding: 7px 5px 0px 5px;
        border-right: 2px solid #B7B7B7;
        }

    #codetabs li:hover{
        background-color: grey;
        }

如果有人认为我可能遗漏了任何重要的代码或信息,也请告诉我。我不认为 HTML 是必要的。

基本上你的问题是你的列表项都是包含在药丸形框 (id="codetabs") 中的矩形。如果您希望背景颜色填充每个按钮,您将需要使用一些伪 类(:first-child 和 :last-child)来指定第一个和最后一个 li 项目的边框半径值。

这是工作 CSS:

#codetabs{
    width: 197px;
    height: 30px;
    position: relative;
    top: 8px;
    background-color: white;
    margin: 0 auto;
    padding: 0;
}

#codetabs ul{
    height: 50px;
    position: relative;
    margin: 0 auto;
    padding-left: 5px;
}

#codetabs li{
    text-align: center;
    float: left;
    height: 23px;
    list-style: none;
    margin: 0;
    padding: 7px 5px 0px 5px;
    border-width: 2px 2px 2px 0;
    border-color: #B7B7B7;
    border-style: solid;
}

#codetabs ul :first-child {
    border-radius: 10px 0 0 10px;
    border-left-width: 2px;
}
#codetabs ul :last-child {
    border-radius: 0 10px 10px 0;
}
#codetabs li:hover{
    background-color: grey;
}

http://jsfiddle.net/d09xgfzc/1/