首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery悬停动画:无法同时设置不透明度和背景位置的动画

jQuery悬停动画:无法同时设置不透明度和背景位置的动画
EN

Stack Overflow用户
提问于 2012-09-12 11:24:37
回答 2查看 703关注 0票数 1

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

代码语言:javascript
复制
<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,但从我所读到的内容来看,这似乎应该可以工作。有人能帮我弄明白我做错了什么吗?

EN

回答 2

Stack Overflow用户

发布于 2012-09-12 11:26:54

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

代码语言:javascript
复制
<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)从队列中删除先前的动画。

票数 1
EN

Stack Overflow用户

发布于 2012-09-12 11:30:25

正如您所看到的hereproperty是CSS属性的映射,duration是第二个参数。

代码语言:javascript
复制
$(this).stop().animate({
    'background-position-y': '28px',
    'opacity': 1
}, 100)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12380798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档