Библиотека AOS (Animate on Scroll) разработана с учётом широкого спектра браузеров, однако при внедрении анимаций необходимо учитывать особенности обратной совместимости, чтобы страницы корректно отображались на старых версиях браузеров и устройствах с ограниченной поддержкой современных CSS-свойств.
На текущий момент AOS гарантирует корректную работу в:
Для старых браузеров, таких как Internet Explorer, библиотека частично поддерживает базовые анимации, однако многие эффекты могут не работать корректно из-за отсутствия поддержки CSS-трансформаций и анимаций.
AOS автоматически применяет класс
aos-init, чтобы элементы были видимыми даже без
анимации. Это позволяет сохранять структурную целостность
страницы, даже если анимации не поддерживаются.
Пример базовой структуры для совместимости:
<div class="aos-init" data-aos="fade-up">
Контент блока
</div>
В старых браузерах блок будет отображён без анимации, но не исчезнет с экрана, что предотвращает разрывы дизайна.
Для более точного контроля поведения на старых браузерах можно использовать условные CSS-классы. Например:
.no-aos .aos-init {
opacity: 1 !important;
transform: none !important;
transition: none !important;
}
Подключение класса no-aos к <body>
можно выполнить через JavaScript при обнаружении неподдерживаемого
браузера:
if (!('IntersectionObserver' in window)) {
document.body.classList.add('no-aos');
}
IntersectionObserver используется AOS для отслеживания
видимости элементов. Его отсутствие сигнализирует о старом браузере.
На устройствах с низкой производительностью и старых мобильных
браузерах рекомендуется отключать сложные анимации или
снижать их количество. Это реализуется через параметр
disable при инициализации:
AOS.init({
disable: 'phone', // отключение на телефонах
});
Возможные значения disable:
'phone' — смартфоны'tablet' — планшетыfunction — пользовательская функция, возвращающая
true/false для отключенияПример пользовательской функции:
AOS.init({
disable: function() {
return window.innerWidth < 768; // отключение на экранах меньше 768px
}
});
AOS использует свойства:
transformopacitytransitionНа старых браузерах эти свойства могут не поддерживаться полностью. Для корректного отображения необходимо проверять префиксы для CSS, например:
.aos-animate {
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
opacity: 1;
transition: all 0.6s ease-out;
}
Стандартная инициализация:
AOS.init({
duration: 800, // время анимации в миллисекундах
easing: 'ease-in-out', // тип ускорения
once: true, // анимация только один раз
});
Для старых браузеров рекомендуется добавить проверку:
if (AOS && typeof AOS.init === 'function') {
AOS.init({
duration: 800,
easing: 'ease-in-out',
once: true
});
}
Это предотвращает ошибки в случаях, когда библиотека не загружена полностью.
Если браузер не поддерживает IntersectionObserver или CSS-анимации,
можно предусмотреть резервные эффекты через простое появление
элементов, например с помощью opacity или плавного
появления через Jav * aScript:
if (!('IntersectionObserver' in window)) {
const elements = document.querySelectorAll('[data-aos]');
elements.forEach(el => el.style.opacity = 1);
}
Такой подход обеспечивает, что контент остаётся доступным и читаемым, даже если анимации недоступны.
aos-init и aos-animate
как базовые классы.disable для устройств с низкой
производительностью.Обеспечение обратной совместимости позволяет внедрять анимации AOS без риска нарушения функциональности и визуального оформления на старых устройствах и браузерах.