CSS菜单继续悬停

时间:2013-06-25 06:07:12

标签: css navigation hover

我想的代码是温和的,我想,但是如果在菜单上悬停,菜单会同时移动文本和背景。我尝试了几个我在这里找到的代码,但没有做任何改动。代码是 -

HTML:

<div class="nav">
        <ul>
            <li><a href="#">home</a></li>
            <li><a href="#">about us</a></li>
            <li><a href="#">portfolio</a></li>
            <li><a href="#">contact</a></li>
        </ul>
    </div>

CSS:

    div.nav {
    float: right;
    margin: 50px -120px;
}

div.nav ul{
    display: block;
    width: 480px;
}

div.nav ul li {
    float: left;
    padding: 0 10px;
    list-style-type: none;
}

div.nav ul li a:link, div.nav ul li a:visited {
    color: #1E1E1C;
    font-family: RockwellRegular,arial,helvetica,sans-serif;
    font-weight: bold;
    text-decoration: none;
}
div.nav ul li a:hover{
    background: #e41f4c;
    border: 10px solid #e41f4c;
    border-radius: 5px;
    color: #fff;
}

找不到任何解决方案了!

小提琴: http://jsfiddle.net/shuvo_nasir/T7Kud/

5 个答案:

答案 0 :(得分:3)

这是一个解决方案:http://jsfiddle.net/T7Kud/1/

将边框大小应用于a标签,并使边框颜色透明,悬停时,只需更改边框颜色。

div.nav ul li a:link, div.nav ul li a:visited {
    color: #1E1E1C;
    font-family: RockwellRegular,arial,helvetica,sans-serif;
    font-weight: bold;
    text-decoration: none;
    border: 10px solid transparent;
    border-radius: 5px;
}
div.nav ul li a:hover{
    background: #e41f4c;
    border-color: #e41f4c;
    color: #fff;
}

答案 1 :(得分:1)

试试此示例http://jsfiddle.net/jaisonje/8fc3A/。我已经从li中删除了填充并在标记中添加了填充,因为如果有填充,这是添加悬停的正确方法。

<强> HTML:

<div class="nav">
    <ul>
        <li><a href="#">home</a></li>
        <li><a href="#">about us</a></li>
        <li><a href="#">portfolio</a></li>
        <li><a href="#">contact</a></li>
    </ul>
</div>

<强> CSS:

div.nav {
    float: right;
    margin: 50px -120px;
}

div.nav ul {
    display: block;
    width: 480px;
}

div.nav ul li {
    float: left;
    list-style-type: none;
}

div.nav ul li a:link, div.nav ul li a:visited {
    color: #1E1E1C;
    font-family: RockwellRegular,arial,helvetica,sans-serif;
    font-weight: bold;
    text-decoration: none;
    border-radius: 5px;
    padding: 5px 10px;
}

div.nav ul li a:hover {
    background-color: #e41f4c;
color: #fff;
}

答案 2 :(得分:0)

试试这个:

div.nav {
float: right;
margin: 50px -120px;
}

div.nav ul{
display: block;
width: 480px;
}

div.nav ul li {
float: left;

list-style-type: none;
} 
div.nav ul li a {
padding: 10px 10px;
} 

div.nav ul li a:link, div.nav ul li a:visited {
color: #1E1E1C;
font-family: RockwellRegular,arial,helvetica,sans-serif;
font-weight: bold;
text-decoration: none;
}
div.nav ul li a:hover{
background: #e41f4c;
/*  border: 10px solid #e41f4c;*/
border-radius: 5px;
color: #fff;
}

<强> FIDDLE

答案 3 :(得分:0)

您的链接上有边框悬停但未处于正常状态。这会改变宽度和高度。 我建议在链接正常状态下使用页面背景的边框颜色设置边框,使其不可见,例如:

div.nav ul li a:link, div.nav ul li a:visited {
    color: #1E1E1C;
    font-family: RockwellRegular,arial,helvetica,sans-serif;
    font-weight: bold;
    text-decoration: none;
    border: 10px solid #ffffff;
}

答案 4 :(得分:0)

指定li元素的宽度 它会解决你的问题。 你增加了边框,这又增加了li元素的大小

div.nav ul li {
float: left;
padding: 0 10px;
list-style-type: none;

宽度:100像素; }

http://jsfiddle.net/T7Kud/4/