能否使用jQuery来动画化webkit translate3d?
我读到过当使用jQuery的animate属性时,必须驼峰命名CSS属性,但在translate3d的情况下似乎不起作用。
我有以下代码,我希望能够将其动画化而不是立即发生:
$("#main-nav").css('-webkit-transform', "translate3d(0px, " + e + "px, 0px) scale(1)");
为了澄清,"e"是一个传递给我上面代码运行的函数的变量。
能否使用jQuery来动画化webkit translate3d?
我读到过当使用jQuery的animate属性时,必须驼峰命名CSS属性,但在translate3d的情况下似乎不起作用。
我有以下代码,我希望能够将其动画化而不是立即发生:
$("#main-nav").css('-webkit-transform', "translate3d(0px, " + e + "px, 0px) scale(1)");
为了澄清,"e"是一个传递给我上面代码运行的函数的变量。
使用 text-indent
属性即可实现。例如:
$(".test").animate({ textIndent: 100 }, {
step: function(now,fx) {
$(this).css('-webkit-transform',"translate3d(0px, " + now + "px, 0px)");
},
duration:'slow'
},'linear');
另外,您可以从-webkit-transform
中删除scale(1)
。
为了避免更改有用的属性,您可以在其中添加任何属性。请参见以下示例:
$(".test").animate({ whyNotToUseANonExistingProperty: 100 }, {
step: function(now,fx) {
$(this).css('-webkit-transform',"translate3d(0px, " + now + "px, 0px)");
},
duration:'slow'
},'linear');
因为我是Firefox的粉丝,所以请您也添加这行代码以实现与Firefox的兼容性,就像这里一样:
$(this).css('-moz-transform',"translate3d(0px, " + now + "px, 0px)");
text-indent
。有些情况下必须使用一个非本地支持的 CSS 属性,而不能用可以替代的属性。 - rb-我认为你可能正在尝试动画一个jQuery不支持的属性,你最好使用像这样的插件: http://ricostacruz.com/jquery.transit/
而不是使用.animate函数,你应该使用.transition,如下所示:
$("#main-nav").transition({ "-webkit-transform": "translate3d(0px, " + e + "px, 0px) scale(1)" });
var $elem
, applyEffect
;
$elem = $('.some_elements');
applyEffect = function ($e, v) {
$e.css({
'-webkit-transform': 'translate3d(0px, ' +String(v)+ 'px, 0px)'
, '-moz-transform': 'translate3d(0px, ' +String(v)+ 'px, 0px)'
, 'transform': 'translate3d(0px, ' +String(v)+ 'px, 0px)'
});
};
applyEffect($elem, 100);
$elem.animate({
foo: 100
}, {
duration: 1000
, step: function (v) {
applyEffect($elem, 100 - v);
}
}
);