CSS:如何阻止悬停效果推送我的文字?

时间:2010-12-20 15:31:59

标签: html css hover menu

我希望你理解这个问题,你可以在这里看到一个例子:

http://jsfiddle.net/nFbJY/

当您滚动它们移动的任何链接时:(

有关如何解决此问题的任何建议?

HTML:

<div class="links">
<ul>
<li><a href="home.html">Home</a></li>
<li><a href="pricing.html">Pricing</a></li>
<li><a href="faq.html">FAQ</a></li>
<li><a href="about.html">About</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</div>

CSS:

div.links {float: left; padding-top:15px;}
ul {list-style:none;}
li {float: left; margin: 0 .15em; padding: 3px 10px 3px 10px; border: 1px solid #CCC;          border-radius: 5px; -moz-border-radius: 5px;}
a:hover { border: 1px solid blue; border-radius: 5px; -moz-border-radius: 5px; padding: 3px 10px 3px 10px; background-color:yellow;}

6 个答案:

答案 0 :(得分:4)

您的大多数样式都位于li上,请尝试将其移至<a>标记

li 
{
    float: left; 
    margin: 0 .15em; 
}

a, a:active, a:visited { 
    border: 1px solid #CCC; 
    border-radius: 5px; 
    -moz-border-radius: 5px; 
    padding: 3px 10px 3px 10px;
}

a:hover 
{ 
    border: 1px solid blue; 
    background-color:yellow;
}

答案 1 :(得分:1)

将CSS更改为:

div.links {float: left; padding-top:15px;}
ul {list-style:none;}
li {float: left;}
a {margin: 0 .15em; padding: 3px 10px 3px 10px; border: 1px solid #CCC; border-radius: 5px; -moz-border-radius: 5px;}
a:hover {border: 1px solid blue; background-color:yellow; }

这样你只能为A标签设计样式而不是LI和A样式。因此,不是效果堆叠导致2个元素上的填充/边框,而只是在一个元素上引起它。什么都没有被推开......

答案 2 :(得分:1)

选中此http://jsfiddle.net/huhu/Tn2HV/

div.links {float: left; padding-top:15px;}
ul {list-style:none;}
li { float:left; }
li a { margin: 0 .15em; padding: 3px 10px 3px 10px; border: 1px solid #CCC; border-radius: 5px; -moz-border-radius: 5px; }
li a:hover { background-color:yellow;}
<div class="links">
    <ul>
    <li><a href="home.html">Home</a></li>
    <li><a href="pricing.html">Pricing</a></li>
    <li><a href="faq.html">FAQ</a></li>
    <li><a href="about.html">About</a></li>
    <li><a href="contact.html">Contact</a></li>
    </ul>
 </div>

答案 3 :(得分:0)

最简单的方法是向margin元素添加a,并将margin: 0添加到a:hover。这样,按钮总是相同的宽度。或者,您可以使用padding(或border)进行类似的操作。

编辑:在你的情况下,使用这个CSS(特别是最后两行):

div.links {float: left; padding-top:15px;}
ul {list-style:none;}
li {float: left; margin: 0 .15em; padding: 3px 10px 3px 10px; border: 1px solid #CCC; border-radius: 5px; -moz-border-radius: 5px;}
a { margin: 0 11px; }
a:hover { border: 1px solid blue; margin: 0; border-radius: 5px; -moz-border-radius: 5px; padding: 3px 10px 3px 10px; background-color:yellow;}

答案 4 :(得分:0)

将CSS定义a:hover切换为li:hover

http://jsfiddle.net/nFbJY/3/

div.links 
{
    float: left; 
    padding-top:15px;
}
ul 
{
    list-style:none;
}
li 
{
    float: left; 
    margin: 0 .15em; 
    padding: 3px 10px 3px 10px; 
    border: 1px solid #CCC; 
    border-radius: 5px; 
    -moz-border-radius: 5px;
}

li:hover 
{ 
    border: 1px solid blue; 
    border-radius: 5px; 
    -moz-border-radius: 5px; 
    padding: 3px 10px 3px 10px; 
    background-color:yellow;
}
<div class="links">
    <ul>
    <li><a href="home.html">Home</a></li>
    <li><a href="pricing.html">Pricing</a></li>
    <li><a href="faq.html">FAQ</a></li>
    <li><a href="about.html">About</a></li>
    <li><a href="contact.html">Contact</a></li>
    </ul>
    </div>

答案 5 :(得分:0)

尝试悬停li元素而不是a

<德尔> a:hover { border: 1px solid blue; border-radius: 5px; -moz-border-radius: 5px; padding: 3px 10px 3px 10px; background-color:yellow;}

li:hover { background-color:yellow; }