Umbrella JS предоставляет удобный и компактный API для работы с DOM,
в том числе для получения и изменения стилей элементов. Одной из
ключевых возможностей является работа с вычисляемыми
стилями (computed styles) — значениями
CSS-свойств, которые реально применяются к элементу после всех правил
CSS, наследования и каскадов.
Для получения текущих стилей элемента используется метод
css(). В отличие от прямого доступа через
element.style, который возвращает только стили, указанные в
атрибуте style элемента, css() позволяет
получить именно вычисленное значение.
u('#myElement').css('color'); // возвращает реальный цвет текста
u('#myElement').css('width'); // возвращает ширину элемента, включая пиксели
Если нужно получить сразу несколько свойств, можно передать массив:
u('#myElement').css(['width', 'height', 'margin']);
Результатом будет объект вида:
{
width: "200px",
height: "100px",
margin: "10px"
}
Метод css() также используется для установки стилей. Он
принимает объект, где ключ — это имя CSS-свойства, а значение — нужное
значение.
u('#myElement').css({
color: 'red',
backgroundColor: '#f0f0f0',
width: '300px'
});
Для одиночного свойства можно использовать короткую форму:
u('#myElement').css('fontSize', '16px');
Umbrella JS автоматически конвертирует имена свойств из camelCase в kebab-case для работы с CSS.
При установке размеров (ширина, высота, отступы) можно использовать числовые значения, к которым автоматически добавляются пиксели:
u('#box').css({
width: 200, // 200px
height: 150 // 150px
});
Для свойств, где пиксели не применимы, нужно указывать единицы явно:
u('#box').css('opacity', 0.5);
u('#box').css('zIndex', 10);
Umbrella JS позволяет получать вычисленные значения даже для сложных
CSS-свойств, таких как margin, padding,
border:
const styles = u('#container').css(['marginTop', 'marginBottom']);
console.log(styles.marginTop); // "20px"
console.log(styles.marginBottom); // "15px"
Если элемент скрыт через display: none, метод
css() вернет значения, которые браузер вычисляет для
текущего состояния, но не для скрытого рендеринга. Для корректного
получения размеров скрытых элементов используют временное изменение
видимости.
Вычисляемые стили особенно полезны при динамических изменениях DOM и анимациях. Например, можно плавно изменить ширину элемента, начиная с текущего значения:
const box = u('#box');
const currentWidth = parseInt(box.css('width'), 10);
box.css({
width: (currentWidth + 50) + 'px'
});
Здесь parseInt извлекает числовое значение из строки
вида "200px", что позволяет безопасно выполнять арифметику
со стилями.
Метод css() возвращает окончательные вычисленные
значения, учитывающие:
Это позволяет точно определить, какие стили реально применяются к элементу, без необходимости вручную разбирать CSS-правила.
::before, ::after)
стандартный метод css() не работает, так как они не
являются полноценными DOM-узлами. Для их стилей нужно использовать
window.getComputedStyle.opacity возвращается как число, а width — как
строка с единицами).css() мгновенные, а не плавные по умолчанию.Изменение цвета всех параграфов на странице:
u('p').css('color', '#333');
Установка одинаковых отступов для группы элементов:
u('.card').css({
padding: '10px',
marginBottom: '20px'
});
Динамическая адаптация ширины элемента:
const container = u('#container');
const containerWidth = parseInt(container.css('width'), 10);
u('#sidebar').css('width', (containerWidth * 0.3) + 'px');
Эти возможности делают Umbrella JS удобным инструментом для манипуляции стилями, как статическими, так и динамическими, с минимальным количеством кода и высокой читаемостью.