Ответ 1
jQuery UI расширяет jQuery native toggleClass
, чтобы взять второй необязательный параметр: duration
toggleClass( class, [duration] )
У меня есть раздел на моем веб-сайте, который, когда пользователь нажимает, мне бы хотелось, чтобы он расширялся, я использую jQuery toggleClass
для этого...
expandable: function(e) {
e.preventDefault();
$(this).closest('article').toggleClass('expanded', 1000);
}
Это работает отлично, только я хотел бы как-то его оживить. В chrome моя статья медленно растет до нового размера, только в Firefox она "мгновенно" меняет размер без анимации, есть ли способ сделать это оживление?
jQuery UI расширяет jQuery native toggleClass
, чтобы взять второй необязательный параметр: duration
toggleClass( class, [duration] )
.toggleClass()
не будет анимироваться, вы должны пойти для метода slideToggle()
или .animate()
.
Вы можете просто использовать переходы CSS, см. эту скрипку
.on {
color:#fff;
transition:all 1s;
}
.off{
color:#000;
transition:all 1s;
}
Вы должны посмотреть на функцию toggle
, найденную на jQuery. Это позволит вам определить метод ослабления, чтобы определить, как работает переключатель.
slideToggle
будет скользить вверх и вниз, а не влево/вправо, если это то, что вы ищете.
Если вам нужен класс, который нужно переключить, вы можете указать, что в функции toggle
есть:
$(this).closest('article').toggle('slow', function() {
$(this).toggleClass('expanded');
});
Я попытался использовать метод toggleClass, чтобы скрыть элемент на моем сайте (используя видимость: скрытый, а не display: none) с небольшой анимацией, но по какой-то причине анимация не работала (возможно, из-за более старой версии пользовательского интерфейса jQuery).
Класс был удален и добавлен правильно, но добавленная продолжительность не показала никакой разницы - элемент был просто добавлен или удален без эффекта.
Итак, чтобы решить эту проблему, я использовал второй класс в методе toggle и вместо этого применил переход CSS:
CSS:
.hidden{
visibility:hidden;
opacity: 0;
-moz-transition: opacity 1s, visibility 1.3s;
-webkit-transition: opacity 1s, visibility 1.3s;
-o-transition: opacity 1s, visibility 1.3s;
transition: opacity 1s, visibility 1.3s;
}
.shown{
visibility:visible;
opacity: 1;
-moz-transition: opacity 1s, visibility 1.3s;
-webkit-transition: opacity 1s, visibility 1.3s;
-o-transition: opacity 1s, visibility 1.3s;
transition: opacity 1s, visibility 1.3s;
}
JS:
function showOrHide() {
$('#element').toggleClass("hidden shown");
}
Спасибо @tomas.satinsky за замечательный (и супер простой) ответ на этот пост.
Должен был отмечен, как только я включил библиотеку пользовательского интерфейса jQuery, он отлично работал и анимации...