Вы не можете анимировать свойство auto
. Чтобы правильно анимировать элемент к центру экрана, вам нужно расположить его absolutely
(или другой), а затем рассчитать размер экрана, размер элемента и положение прокрутки. Вот еще один SO-ответ на что-то подобное. Вот Скрипка
jQuery.fn.center = function () {
this.css("position","absolute");
var top = ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px",
left = ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px";
this.animate({top: top, left: left});
return this;
}
В качестве альтернативы, если вы хотите только горизонтальное выравнивание, вы можете удалить верх из функции анимации. И если вы действительно хотите проявить творческий подход, вы можете удалить position:absolute
и изменить положение margin:auto
после анимации в случае изменения размера экрана. Смотри еще одну скрипку .
jQuery.fn.center = function () {
this.css("position","absolute");
var left = ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px";
this.animate({left: left}, function(){
$(this).css({position: 'static', margin: '0 auto'});
});
return this;
}
$('#selector').center();