1

谁能告诉我为什么这个 jquery 不起作用?

我有一个这样的列表:

      <div id="services">
            <h1>Services</h1>
            <ul>
                <li class="menu"><a href="#">menu item1</a></li>
                <li class="menu"><a href="#">menu item2</a></li>
                <li class="menu"><a href="#">menu item3</a></li>
                <li class="menu"><a href="#">menu item4</a></li>
            </ul>
        </div>

我想在悬停时从左侧滑入背景图像,并在鼠标悬停时将其反转。

下面的 jquery 代码在 moueover 或 mouseout 上没有做任何事情。我在这里想念什么?

$(function(){       
    $('li.menu a').css( {backgroundPosition: "-416px 0"})
    .mouseover(function(){
        $(this).stop().animate({backgroundPosition:"(0px 0px)"}, 500)
    })
    .mouseout(function(){
        $(this).stop().animate({backgroundPosition:"(-416px 0)"}, 500)
    });
});
4

4 回答 4

1

您不能为背景位置设置动画,您可以执行以下操作:

$('li.menu a').css({
    opacity: 0.5,
    marginLeft: "-5px"
});

$('li.menu a').mouseover(function() {
    $(this).stop().animate({
        marginLeft: "0px",
        opacity: 1
    }, 500)
}).mouseout(function() {
    $(this).stop().animate({
        marginLeft: "-5px",
        opacity: 0.5
    }, 500)
});

只是一个演示

于 2012-06-05T11:41:09.880 回答
1

你很幸运:) 我昨天遇到了同样的问题。我看到你和我一样,只需要 X 轴上的动画。

因此,您需要做的就是将单个参数传递给 backgroundPosition,这是 X 轴的默认值。还传递 int,这是像素的默认值。

$('li.menu a').css({
     backgroundPosition: -416
}).mouseover(function(){
     $(this).stop().animate({backgroundPosition: 0}, 500)
}).mouseout(function(){
     $(this).stop().animate({backgroundPosition: -416}, 500)
});
于 2012-06-05T12:14:52.403 回答
0

看起来你不能没有插件来做到这一点。

于 2012-06-05T11:53:30.520 回答
0

试试这个,

$('li.menu a').css({background-position-x:"-416px",background-position-y:"0"}); 

$('li.menu a').mouseover(function(){
    $(this).stop().animate({background-position-x:"0",background-position-y:"0"}, 500)
})
.mouseout(function(){
    $(this).stop().animate({background-position-x:"-416px",background-position-y:"0"}, 500)
});
于 2012-06-05T12:06:02.137 回答