jQuery show() метод - плавное появление скрытых элементов

Метод show() библиотеки jQuery позволяет реализовать плавное появление скрытых элементов на веб-странице. Этот эффект привлекает внимание посетителей и делает интерфейс более живым. Давайте разберемся, как использовать show() для создания анимации.

Основы работы метода show()

Метод show() имеет простой синтаксис вызова:

$('.elem').show();

Где в качестве аргумента передается jQuery объект с элементами, которые нужно показать. Без параметров метод show() сразу отображает элементы, изменяя значение свойства display на block, inline или inline-block в зависимости от начального значения.

Это аналогично вызову:

$('.elem').css('display', 'block');

Но в отличие от метода css(), show() сохраняет исходное значение display во внутреннем кеше jQuery. Это позволяет в дальнейшем скрыть элемент обратно вызовом метода hide().

Для элементов с display: inline применение show() после hide() также восстановит режим отображения inline.

Приоритетность стилей !important

Если display элемента задан со значением !important, метод show() не сможет изменить его. В таком случае нужно использовать другие способы, например:

  • Добавление/удаление класса через addClass() и removeClass()
  • Изменение атрибутов стиля через attr()
  • Переключение класса через toggleClass()
Близкий кадр монитора с jQuery кодом метода show() подсвеченного синим цветом

Анимация появления элементов

Чтобы сделать появление элементов плавным, в метод show() можно передать параметр duration в миллисекундах:

$('.elem').show(300);

Также можно использовать предопределенные значения:

  • 'slow' - 600 мс
  • 'fast' - 200 мс

При этом одновременно будут анимироваться свойства width, height и opacity элемента от 0 до исходных значений.

Далее приведен пример анимации появления блока:

$('#animate-block').click(function() { $('.my-block').show('slow'); });

Кроме длительности можно задать функцию, которая выполнится по окончании анимации:

$('.elem').show('slow', function() { // код после анимации });

Управление эффектами анимации

Начиная с версии jQuery 1.4.3 для управления видом анимации доступен параметр easing. Он позволяет выбрать один из встроенных эффектов:

  • swing - по умолчанию, ускорение/замедление в начале/конце
  • linear - равномерная скорость

Больше вариантов доступно в плагинах, например jQuery UI.

Вид снизу на руку держащую смартфон с анимированным сайтом на jQuery

Дополнительные возможности

Метод show() можно комбинировать с другими эффектами jQuery.

Например, для анимации прозрачности удобно использовать совместно с методом fadeTo():

$('.elem') .fadeTo(0, 0); // Скрыть со 100% прозрачностью .show('slow'); // Анимировать width/height .fadeTo('slow', 1); // Плавно делать полностью видимым

Такой подход дает больше возможностей для создания сложных анимаций появления.

Запуск анимации по событию

Анимацию на show() можно инициировать по различным событиям, например, при клике мыши:

$('#show-button').on('click', function() { $('.elem').show('slow'); });

Или при прокрутке страницы:

$(window).on('scroll', function() { if ($(this).scrollTop() > 200) { $('.scroll-elem').show('slow'); } });

Это позволяет создавать анимацию в нужный момент взаимодействия пользователя с интерфейсом.

Вопросы производительности

При использовании анимации, особенно на большом количестве элементов, возможны проблемы с производительностью. Чтобы их избежать, нужно:

  • Тестировать на разных устройствах, особенно мобильных
  • Оптимизировать CSS и JS код
  • Использовать альтернативы для IE
  • Подключать полифилы для старых браузеров

Также важно правильно настраивать длительность анимации и выбирать эффекты. Следует всегда искать баланс между визуальными эффектами и производительностью сайта.

Кроссбраузерная совместимость

Для корректной работы анимации show() на разных браузерах могут понадобиться:

  • Полифилы для старых браузеров
  • Префиксы CSS свойств
  • Обработка ошибок и исключений

Также следует тестировать работу скриптов на распространенных мобильных браузерах.

Браузер Поддержка
Chrome Полная
Safari Полная
Firefox Требуются префиксы
Edge Полная

В целом, правильно настроенная анимация show() будет работать на подавляющем числе современных браузеров. А с помощью полифилов и проверок можно сделать ее кроссбраузерной.

jQuery animate

Метод animate() позволяет реализовать более сложные анимации CSS свойств.

В отличие от show() и hide(), в animate() можно задавать анимацию для любых свойств, не только width/height/opacity.

Например, плавное изменение цвета фона:

$('.elem').animate({ backgroundColor: '#ff0000' }, 1000);

А также анимировать сразу несколько свойств:

$('.elem').animate({ width: '500px', height: '400px', opacity: 0.5 }, 500);

Поддерживаются также относительные значения свойств, например на 50px больше текущей ширины:

$('.elem').animate({ width: '+=50px' });

Метод animate() открывает очень широкие возможности для создания анимации без использования CSS @keyframes.

jQuery show effect

Для создания анимации появления элементов с различными эффектами можно комбинировать show() и hide() с дополнительными методами jQuery.

Например, совместно с slideDown() и slideUp():

$('.elem') .slideUp(300); Copy code.show(800); // Анимация width/height/opacity .slideDown(300);

Или использовать fadeIn() и fadeOut() для плавного изменения прозрачности:

$('.elem') .fadeOut(400); Copy code.show(600); .fadeIn(400);

Для более сложных эффектов можно применить animate(). Например, анимация поворота:

$('.elem') .animate({ opacity: 0, rotate: '-90deg'}, 300); Copy code.show(500); .animate({ opacity: 1, rotate: '0deg'}, 300);

Главное при создании анимации — экспериментировать и подбирать нужный визуальный эффект, оптимальную скорость и плавность.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.