Я использую такой код:
speed = 500;
var vP = "";
var transitionEnd = "transitionEnd";
if ($.browser.webkit) {
vP = "-webkit-";
transitionEnd = "webkitTransitionEnd";
} else if ($.browser.msie) {
vP = "-ms-";
} else if ($.browser.mozilla) {
vP = "-moz-";
transitionEnd = "transitionend";
} else if ($.browser.opera) {
vP = "-o-";
transitionEnd = "oTransitionEnd";
}
function animate(object, cssProperties, callback, ms) {
if (!ms) {
ms = speed;
}
if (Modernizr.csstransitions) {
object.css(vP+"transition", "all "+ms+"ms ease-in-out");
object.css(cssProperties);
if ($.isFunction(callback)) {
object.bind(transitionEnd,function(){
object.unbind(transitionEnd);
callback();
});
}
} else {
if ($.isFunction(callback)) {
object.animate(cssProperties, ms, callback);
} else {
object.animate(cssProperties, ms);
}
}
}
Тогда для простых случаев:
animate($("#someID"),{"left":"100px"});
или для сложных, которые требуют префикса поставщика:
var cssArgs = {};
cssArgs[vP+"transform"] = "translate(100px,0px)";
animate($("#someID"),cssArgs);
Если я делаю скольжение, я бы рекомендовал использовать transform3d и translate of say (100px, 0,0). На iOS это будет аппаратно ускорено.
Я использую Modernizr, чтобы проверить, что я могу сделать, с чем-то вроде этого:
function slide(gallery_chunk, sliderWidth) {
if (Modernizr.csstransforms3d && Modernizr.csstransitions) {
var cssArgs = {};
cssArgs[vP+"transform"] = "translate3d("+gallery_chunk*-sliderWidth+"px,0px,0px)";
animate($("#gallery_content #thumbnails"),cssArgs);
} else if (Modernizr.csstransforms && Modernizr.csstransitions) {
var cssArgs = {};
cssArgs[vP+"transform"] = "translate("+gallery_chunk*-sliderWidth+"px,0px)";
animate($("#gallery_content #thumbnails"),cssArgs);
} else {
animate($("#gallery_content #thumbnails"),{"left":gallery_chunk*-sliderWidth+"px"});
}
}
Этот пример взят из ползунка изображения, поэтому я отправляю ему ширину и порцию (т. Е. Страницы 0,1 или 2).
Надеюсь, это даст вам некоторые идеи!