Полный список методов ally.style

Библиотека 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: none
  • visibility: hidden
  • родительские скрытые элементы
  • opacity: 0

ally.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 и оптимизирован для минимизации нагрузки на рендеринг страницы.


Работа с CSS-переменными

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-компонентами.