Прежде всего - вам понадобятся переходы только для того, что вы делаете.Анимации не поддерживаются так широко, и все, что вы делаете с помощью jQuery animate (), может быть выполнено с переходом (за исключением очень определенных типов переходов, таких как переходы с упругой или отказов).
Я бы добавил этот переход в свой CSSа затем используйте modernizr для обнаружения объектов в javascript.
Например, мой CSS может выглядеть так (это не совсем то, что вы пытаетесь сделать, а пример):
#lightbox {
opacity: 0;
width: 100%;
height: 100%;
left: -50%;
top: -50%;
-ms-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
-webkit-transition: all 0.2s linear;
transition: all 0.2s linear;
-webkit-transform: translateZ(0);
}
#lightbox.active {
left: 0;
top: 0;
opacity: 1;
}
Тактеперь скрытое состояние по умолчанию может быть включено или выключено с помощью addClass («активный»).В браузерах, которые поддерживают переходы CSS3, это будет происходить!И для браузеров без поддержки переходов CSS3 элемент с идентификатором лайтбокса просто появится или исчезнет без анимации.Также обратите внимание, что я добавил свойство webkit translateZ.Это хитрость, чтобы получить ускорение GPU при переходах CSS3 в Safari и Chrome.Это очень сильно влияет на производительность, особенно на устройствах iOS.
ОК - так что же теперь, как мы откатимся на jquery.animate для браузеров, которые не поддерживают переходы CSS3?Это где модернизр вступает в игру.Допустим, пользователь нажал кнопку закрытия, и теперь вы хотите, чтобы лайтбокс исчез.Вы должны удалить «активный» класс для браузеров с переходами CSS3 ИЛИ использовать метод jquery.animate для браузеров, которые не поддерживают переходы:
if(Modernizr.csstransitions){
$("#lightbox").removeClass("active");
} else {
$("#lightbox").animate({...});
}
Для получения дополнительной информации о свойстве см .: http://www.modernizr.com/docs/#csstransitions