jqueryanimation背景的位置

我似乎无法得到这个工作。

$('#product_family_options_dd').animate({ height: '300px', width: '900px', backgroundPosition: '-20px 0px', }, 

高度和宽度的animation,但不是背景。

你不需要使用背景animation插件,如果你只是使用这样的单独的值:

 $('.pop').animate({ 'background-position-x': '10%', 'background-position-y': '20%' }, 10000, 'linear'); 

我想这可能是因为它期待一个单一的价值?

取自jQuery上的animation页面 :

animation属性和值

所有的animation属性应该被animation成一个数字值,除非如下所述; 大多数非数字属性不能使用基本的jQueryfunction来animation。 (例如,宽度,高度或左侧可以是animation效果,但不能使用背景色。)除非另有说明,否则属性值将被视为像素数。 可以指定单位em和%。

由于jQuery并不支持这种开箱即用的方法,所以目前为止我所遇到的最好的解决scheme是在jQuery中定义自己的CSS钩子 。 本质上,这意味着定义自定义方法来获取和设置CSS值,也可以使用jQuery.animate()。

在github上已经有了一个非常方便的实现: https : //github.com/brandonaaron/jquery-cssHooks/blob/master/bgpos.js

有了这个插件,你可以做这样的事情:

 $('#demo1').hover( function() { $(this).stop().animate({ backgroundPositionX: '100%', backgroundPositionY: '100%' }); }, function () { $(this).stop().animate({ backgroundPositionX: '105%', backgroundPositionY: '105%' }); } ); 

对我来说,这个工作到目前为止testing的所有浏览器,包括IE6 +。

我刚才在网上做了一个快速演示 ,如果你需要进一步的指导,你可以把它分开。

jQuery的animation函数不是专门用于直接animationDOM对象的属性。 也可以调用variables,并使用step函数获取补间每一步的variables。

例如,要从背景位置(0px 0px)到背景位置(100px 500px)设置背景位置的animation,可以这样做:

 $({temporary_x: 0, temporary_y: 0}).animate({temporary_x: 100, temporary_y: 500}, { duration: 1000, step: function() { var position = Math.round(this.temporary_x) + "px " + Math.round(this.temporary_y) + "px"; $("#your_div").css("background-position", position); } }); 

只要确保不要忘记这一点。 里面的stepfunction。

在你的jQuery代码中,在backgroundPosition部分之后有一个逗号:

 backgroundPosition: '-20px 0px', 

但是,在.animate()方法(以及类似的方法)中列出要更改的各种属性时,大括号之间列出的最后一个参数在其后面不应有逗号。 我不能说这是为什么背景的位置没有改变,但这是一个错误,我会build议修复。

更新:在我刚才所做的有限testing中,在.animate()方法中input纯数字值(不带“px”)适用于backgroundPosition。 换句话说,这个工作:

 backgroundPosition: '-20 0' 

但是,这并不是:

 backgroundPosition: '-20px 0' 

希望这可以帮助。

您也可以使用math组合“ – =”来移动背景

 $(this).animate( {backgroundPositionX: "-=20px"} ,500); 

你不能使用简单的jQuery的Animate来做到这一点,因为它涉及到2个值。

要解决它只是包括背景位置插件 ,你可以animation背景随意。

尝试backgroundPosition:"(-20px 0)"

只是要仔细检查你是否参考了这个背景位置插件?

它在jsfiddle上的背景位置插件的例子。

您可以使用setInterval方法更改图像的背景位置,请参阅演示在这里: http : //jquerydemo.com/demo/animate-background-image.aspx

我有一个div My_div 250px x 250px,背景图片也是250 x 250

CSS:

 #My_div { background: url("..//img/your_image.jpg") no-repeat; background-position: 0px 250px; } 

JavaScript的:

 $("#My_div").mouseenter(function() { var x = 250; (function animBack() { timer = setTimeout(function() { if (x-- >= 0) { $('#My_div').css({'background-position': '0px '+x+'px'});; animBack(); } }, 10); })(); }); $("#My_div").mouseleave(function(){ $('#My_div').css({'background-position': '0px 250px'}); clearTimeout(timer); }); 

我希望它有帮助

使用Firefox:
指定两个值:不能与任何语法组合一起使用 – 如上面指出的几个。 使用Firebug,我得到“错误在parsing'background-position'的值。 直到animation结束。

'backgroundPosition':'17 .5em' – 指定1值:在FF和CHrome OPera,SF(Safari)和IE中有效,第二个值或y位置(垂直)设置为“中心”。 从Firebug中, 元素的风格被设置为:
style =“background-position:17.5em center;”

 function getBackgroundPositionX(sel) { pos = $(sel).css('backgroundPosition').split(' '); return parseFloat(pos[0].substring(0, pos[0].length-2)); } 

这返回[x]值。 数字的长度没有关系。 可能是例如9999或0。