1

我正在尝试为导航元素设置动画,以便当鼠标悬停在元素上时,它变得完全不透明(不透明度为 30%),并且背景图像向上移动 10px。这是我的代码:

<script type="text/javascript">
$(document).ready(function(){
$('#topnav li')
.mouseover(function(){
    $(this).stop().animate(
        {'background-position-y': '28px'},
        {opacity: 1},
        {duration:100})
    })
.mouseout(function(){
    $(this).stop().animate(
        {'background-position-y': '38px'},
        {opacity: 0.3},  
        {duration:100})
    })
});
</script>

但是,只有列出的第一个动画实际播放。正如所写,背景位置动画但不透明度没有。如果我切换不透明度和背景位置动画,则不透明度动画,但背景位置没有。我对 jQuery 不是很好,但从我读过的内容来看,这似乎应该可行。谁能帮我理解我做错了什么?

4

2 回答 2

1

您没有使用正确形式的参数来为多个属性设置动画。所有属性都属于作为第一个参数传递的对象。这在jQuery.animate()的文档中非常清楚。

<script type="text/javascript">
$(document).ready(function(){
$('#topnav li')
.mouseover(function(){
    $(this).stop(true).animate(
        {'background-position-y': '28px', opacity: 1},
        {duration:100})
    });
.mouseout(function(){
    $(this).stop(true).animate(
        {'background-position-y': '38px', opacity: 0.3},
        {duration:100})
    });
});
</script>

仅供参考,您可能还想.stop(true)从队列中删除上一个动画。

于 2012-09-12T03:26:54.347 回答
0

As you can see here, the property is a map of CSS properties and duration is the second parameter.

$(this).stop().animate({
    'background-position-y': '28px',
    'opacity': 1
}, 100)
于 2012-09-12T03:30:24.733 回答