Библиотека AOS (Animate on Scroll) предоставляет возможность задавать анимации элементов при скролле страницы. Однако на мобильных устройствах анимации могут снижать производительность и создавать нагрузку на процессор, что особенно заметно на слабых смартфонах. Для решения этой проблемы библиотека предлагает встроенные методы контроля, позволяющие отключать анимации на мобильных устройствах или управлять их поведением.
AOS использует параметр disable, который позволяет
отключать анимации в зависимости от устройства или размера экрана.
Параметр disable может принимать три типа значений:
Булево значение
true – анимации полностью отключены.false – анимации включены.Строка 'mobile'
Функция
window и должна возвращать
true (для отключения) или false (для
включения).Пример инициализации с использованием строки
'mobile':
AOS.init({
disable: 'mobile', // анимации отключены на мобильных устройствах
duration: 800, // длительность анимации в миллисекундах
easing: 'ease-in-out', // плавность анимации
});
Функция позволяет учитывать не только тип устройства, но и ширину окна, производительность или конкретные браузеры. Это дает максимальную гибкость при управлении анимациями.
Пример функции для отключения анимаций на устройствах с шириной экрана менее 1024px:
AOS.init({
disable: function() {
return window.innerWidth < 1024; // отключение для планшетов и мобильных
},
duration: 600,
once: true, // анимация проигрывается один раз
});
В этом примере анимации будут проигрываться только на устройствах с экраном шире 1024 пикселей, что эффективно снижает нагрузку на слабые устройства.
Для еще более точного контроля можно комбинировать отключение анимаций через JavaScript с CSS-медиа-запросами. Это позволяет скрывать анимации через CSS на маленьких экранах и одновременно экономить ресурсы.
Пример:
@media (max-width: 768px) {
[data-aos] {
opacity: 1 !important;
transform: none !important;
}
}
Такой подход гарантирует, что даже если скрипт AOS активен, визуальные эффекты не будут применяться на мобильных устройствах, и элементы сразу отображаются в финальном состоянии.
once: true – проигрывает анимацию
только один раз при первом скролле. На мобильных устройствах снижает
нагрузку при многократном скролле.mirror: false – предотвращает
повторное проигрывание анимаций при скролле вверх, экономя ресурсы.offset – отступ в пикселях до
активации анимации. На мобильных устройствах можно увеличить, чтобы
анимации запускались чуть позже и не перегружали интерфейс.AOS.init({
disable: 'mobile',
duration: 700,
easing: 'ease-out-cubic',
once: true
});
AOS.init({
disable: function() {
return window.innerWidth < 1200;
},
duration: 500,
mirror: false
});
AOS.init({
disable: function() {
// отключаем на устройствах с низким FPS
return !window.requestAnimationFrame;
},
duration: 600
});
disable: 'mobile' и once: true
минимизирует нагрузку и предотвращает дрожание интерфейса.Эти методы позволяют гибко управлять анимациями в зависимости от устройства и обеспечивают стабильную работу страницы на мобильных платформах без потери визуальной привлекательности на десктопе.