【问题标题】:Animate background not working as expected动画背景未按预期工作
【发布时间】:2023-03-31 22:58:01
【问题描述】:

我以前做过这种事情,但现在不适合我......

我有一个容器 div,里面有一个带有部分透明图像的 div。当用户将鼠标悬停在容器 div 上时,我希望该 div 上的背景移动 0px -56px。我已经尝试过像往常一样使用动画,但它不起作用。最初我的旧脚本在 1.6 中不起作用,所以我回到 1.4.2,它没有任何区别,所以也许我的代码只是垃圾......

$('.trans_bg').css({"background-position":"0 0"});
$('.trans_bg').hover(
function() {
    $(this).animate({backgroundPosition: "(0px -56px)"},{duration:300}); 
},
function(){
    $(this).animate({backgroundPosition: "(0px 0px)"},{duration:300});
})

有什么想法吗?

【问题讨论】:

    标签: jquery jquery-animate background-position


    【解决方案1】:

    您的代码几乎是正确的,只需在设置新位置时去掉括号即可:

    $('.trans_bg').css({ backgroundPosition: "0 0" });
    $('.trans_bg').hover(function() {
        $(this).animate({ backgroundPosition: "0px -56px"}, 300);
    }, function() {
        $(this).animate({ backgroundPosition: "0px 0px"}, 300);
    });
    

    但不幸的是,jQuery 不能原生地为 backgroundPosition 设置动画。

    但是有一个很棒的插件可以做到这一点:Background-Position Animation Plugin

    把它放到你的项目中,这样输入的代码就可以开始工作了!

    【讨论】:

    • 您好,我取出了 () 和背景移动,但它像标准 CSS 一样立即移动,而不是平滑的动画。我会试试你链接的那个插件。奇怪的是我以前做过 - tinyurl.com/6gk9bgc
    • 看起来插件运行良好。感谢您的链接。仍然让我感到困惑为什么这次我需要它,但只要它有效!感谢您的帮助!
    • 好吧,我真的无法回答为什么你以前不需要它。但是,当然,如果您单独为每个轴设置动画,则无需插件即可。见here
    • 太棒了!这正是我想要的。谢谢:D
    • 只是一个快速更新,虽然 backgroundPositionX 和 backgroundPositionY 在某些浏览器中工作,但我不想在 firefox 中工作(至少在 mac 上,还不确定 windows)......所以我结束了毕竟使用插件代码。不过看起来不错。
    猜你喜欢
    • 2020-05-22
    • 2019-10-24
    • 2021-10-19
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 2015-12-20
    相关资源
    最近更新 更多