Библиотека ally.js предоставляет мощные инструменты
для работы с доступностью веб-страниц. Один из модулей —
ally.style — предназначен для управления стилями элементов
DOM, при этом учитывается совместимость с различными браузерами и
особенностями визуальной презентации для пользователей с ограниченными
возможностями. Модуль позволяет получать, задавать и вычислять стили
элементов в реальном времени, облегчая динамическую настройку
интерфейса.
ally.style.get(element, property)Метод возвращает текущее значение CSS-свойства у указанного элемента.
Параметры:
element — DOM-узел.property — имя CSS-свойства в camelCase или
kebab-case.Возвращаемое значение: строка с вычисленным стилем.
Пример:
const color = ally.style.get(document.querySelector('#button'), 'color');
console.log(color); // "rgb(0, 0, 0)"
Особенность: метод возвращает компьютед-значение, т.е. окончательное значение свойства после применения всех CSS-правил, включая наследование.
ally.style.set(element, property, value)Позволяет изменить CSS-свойство элемента программно.
Параметры:
element — DOM-узел.property — имя CSS-свойства.value — значение свойства, строка или число (для
свойств, требующих единиц измерения, число преобразуется в
px).Пример:
ally.style.set(document.querySelector('#button'), 'backgroundColor', 'red');
ally.style.set(element, styles)Позволяет задать несколько свойств одновременно через объект.
Пример:
ally.style.set(document.querySelector('#button'), {
backgroundColor: 'blue',
fontSize: '16px',
borderRadius: '4px'
});
Метод учитывает кросс-браузерные префиксы и корректно работает с CSS-переменными.
ally.style.getBoundingClientRect(element)Возвращает объект с размерами и координатами элемента относительно окна браузера.
Возвращаемый объект содержит:
top, right, bottom,
left — координаты границ.width, height — размеры элемента.x, y — положение относительно
viewport.Пример:
const rect = ally.style.getBoundingClientRect(document.querySelector('#modal'));
console.log(rect.width, rect.height);
ally.style.getVisibleBoundingRect(element)Позволяет получить видимую часть элемента, учитывая overflow и clipping.
ally.style включает утилиты для управления классами
элементов.
ally.style.addClass(element, className)Добавляет класс к элементу, если его нет.
ally.style.removeClass(element, className)Удаляет указанный класс, если он присутствует.
ally.style.toggleClass(element, className)Переключает наличие класса.
Пример:
ally.style.addClass(button, 'active');
ally.style.toggleClass(button, 'highlight');
ally.style.isVisible(element)Возвращает true, если элемент видим пользователю, и
false в противном случае. Учитывает:
display: nonevisibility: hiddenally.style.isFocused(element)Проверяет, находится ли элемент в фокусе.
ally.style.isDisabled(element)Возвращает true для элементов с атрибутом
disabled.
ally.style.getDimensions(element)Возвращает объект {width, height} с размерами элемента,
учитывая padding и border, но без margin.
ally.style.getViewportOffset(element)Позволяет определить, насколько элемент находится в пределах видимой области окна.
ally.style.onChange(element, callback)Метод регистрирует наблюдатель за изменением стиля элемента. Позволяет реагировать на динамические изменения интерфейса.
Пример:
ally.style.onChange(button, (newStyles) => {
console.log('Styles updated:', newStyles);
});
Метод использует MutationObserver и оптимизирован для
минимизации нагрузки на рендеринг страницы.
ally.style.getVariable(element, variableName)Возвращает значение CSS-переменной, заданной на элементе или его родителях.
ally.style.setVariable(element, variableName, value)Позволяет динамически менять CSS-переменные.
Пример:
ally.style.setVariable(document.documentElement, '--main-color', '#3498db');
const color = ally.style.getVariable(document.documentElement, '--main-color');
ally.style может использоваться совместно с
CSS-анимациями и трансформациями. Методы корректно обрабатывают свойства
transform, opacity, transition,
обеспечивая точные вычисления текущих состояний.
ally.style.getTransformMatrix(element)Возвращает матрицу трансформации текущего состояния элемента. Полезно для сложной анимации и вычисления координат после трансформации.
ally.style всегда возвращают актуальные
вычисленные значения, а не только объявленные в CSS.Хотя ally.style изначально предназначен для обеспечения
доступности, его функции полностью совместимы с общими задачами работы
со стилями, динамическими интерфейсами и сложными UI-компонентами.