1

我正在尝试制作一个菜单,当您将鼠标悬停在其他菜单项时,会从白色变为蓝色。我正在考虑使用不透明度,但没有运气,你有什么建议?

我正在使用此代码

HTML

 <nav>
        <ul class="showcase">
        <li><a href="#" class="current">1</a></li>
        <li><a href="#">2</a></li>
        <li><a href="#">3</a></li>
        <li><a href="#">4</a></li>
           <li><a href="#">5</a></li>

        </ul>
        </nav>​

CSS

nav ul li a{
    font-size: 20px;
    font-family:Arial, Helvetica, sans-serif;
    color: black;
    text-transform:capitalize;
    font-weight:normal;
    display:block;    /* IE6, IE7 line height fix */
    padding:15px;
    background-color:transparent;
    margin-top:0px;
    margin-right:6px;
    text-decoration:none;    
}
nav ul li a:hover{
    background-color: #43AEF2;
    padding:15px;
    color:white;
    -moz-border-radius: 8px;
    border-radius: 8px;
}

nav ul li a.current{
    background-color:#43aef2 ;
    padding:15px;
    color:white;
    -moz-border-radius: 8px;
    border-radius: 8px;
}

​ JS

$("li").css('opacity', '1')
$(".selected").css('opacity', '.9')

$('ul.showcase').hover(

function() {
    $(this).find('li').stop().fadeTo(500, 1);
}, function() {
    $(this).find('li').stop().fadeTo(500, .8);
})​
4

4 回答 4

2

不能 100% 确定您的例外结果,但请尝试一下:

$("li").css('opacity', '0.40');
$(".selected").css('opacity', '1');

$('ul.showcase > li').hover(function () {
    $(this).stop().fadeTo(500, 1);
}, function () {
    $(this).not('.selected').stop().fadeTo(500, 0.40);
})​;​

试试这个小提琴:http: //jsfiddle.net/fewds/mdamC/228/

于 2012-12-25T04:49:45.133 回答
1

由于您使用的是 css3,因此您可以考虑对悬停使用过渡效果,例如:

nav ul li a:hover{
    -webkit-transition: background-color linear 1s;
    -moz-transition: background-color linear 1s;
    -ms-transition: background-color linear 1s;
    transition: background-color linear 1s;
    background-color: #43AEF2;
    padding:15px;
    color:white;
    -moz-border-radius: 8px;
    border-radius: 8px;
}

点击链接后:

$('ul li a').on('click',function(){
    $(this).parents('ul').find('li a').removeClass('current');
    $(this).addClass('current');
});

JSFiddle

于 2012-12-25T09:01:28.350 回答
0

我会接受@elclanrs 的建议,但在你的代码中想知道为什么你选择整个 ul 而不是为每个 li 元素

$('ul.showcase li').hover(
  function() {
    $(this).fadeTo(500, 1);
}, function() {
    $(this).fadeTo(500, .8);
})​
于 2012-12-25T04:44:56.347 回答
0

相反,“悬停”我更喜欢“mouseenter”和“mouseleave” http://jsfiddle.net/mdamC/226/

    $('ul.showcase li').mouseenter(function() {
        $(this).stop().fadeTo(1,1);
    })
    $('ul.showcase li').mouseleave(function() {
        $(this).stop().fadeTo(1,0.4);
    })
于 2012-12-25T04:49:05.200 回答