【问题标题】:animate backgroundPosition动画背景位置
【发布时间】:2011-06-17 03:00:01
【问题描述】:

任何人都知道为什么以下内容不起作用。如果我只是直接设置 css 而没有动画,它就可以工作。 //div.css( {backgroundPosition: "bottom left"} );

   $("#menu li").bind("mouseover", function(){
        var div=$(this).find('div');
        div.css( {backgroundPosition: "bottom left"} );
        div.stop().animate( {backgroundPosition: '25px 0px'}, {duration:500} );
    })
    .mouseout(function(){
        var div=$(this).find('div');
        div.stop().animate( {backgroundPosition: "0px 0px"}, {duration:500} );

    });

【问题讨论】:

    标签: jquery jquery-animate background-position


    【解决方案1】:

    您必须在 IE 中设置 backgroundPosition 的初始值,否则这将不起作用,因为它不知道如何制作动画。

    我也会将 mouseover 和 mouseout 更改为具有相同的样式,而不是像在我的示例中那样使用 bind onone 而在另一个上使用 mouseover

    像这样:

    $("#menu li > div").css({
        backgroundPosition: "0px 0px"
    })
    
    $("#menu li").mouseover(function() {
        var div = $(this).find('div');
        div.stop().animate({
            backgroundPosition: '25px 0px'
        }, 500);
    }).mouseout(function() {
        var div = $(this).find('div');
        div.stop().animate({
            backgroundPosition: "0px 0px"
        }, 500);
    });
    

    【讨论】:

    • 所以我根本不需要bind方法?
    • .mouseover 是 .bind('mouseover', handler) 的快捷方式,所以它完全相同但更短。您已经将它用于 .mouseout。
    【解决方案2】:

    试试这个

    $("#menu li").bind("mouseover", function(){
            var div=$(this).find('div');
            div.stop().animate( {backgroundPosition: '25px 0px'}, 500 );
        })
        .mouseout(function(){
            var div=$(this).find('div');
            div.stop().animate( {backgroundPosition: "0px 0px"}, 500 );
    
        });
    

    【讨论】:

    • 我必须使用这个插件 jquery.backgroundPosition.js 才能使 backgroundPosition 动画化。
    猜你喜欢
    • 2011-07-07
    • 2011-03-01
    • 1970-01-01
    • 2011-07-27
    • 2011-05-03
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多