Umbrella JS предоставляет удобный и компактный API для работы с DOM, включая управление стилями, классами и селекторами. Одной из сильных сторон библиотеки является возможность манипулировать элементами, используя селекторы CSS, включая псевдоклассы и псевдоэлементы. Понимание их работы позволяет писать гибкий и выразительный код для динамического интерфейса.
Псевдоклассы позволяют выбирать элементы на основе их состояния или
положения в дереве DOM. Umbrella JS поддерживает все стандартные
CSS-псевдоклассы, такие как :first-child,
:last-child, :nth-child(n),
:hover, :checked и другие.
Примеры использования:
// Выбираем первый элемент списка
u('li:first-child').addClass('highlight');
// Выбираем каждый второй элемент списка
u('li:nth-child(2n)').css('background-color', '#f0f0f0');
// Выбираем элементы, которые находятся в состоянии hover
u('button:hover').css('color', 'red');
Особенности работы с псевдоклассами:
u('ul.menu li:first-child.active').:hover,
:focus, :checked) реагируют на актуальное
состояние DOM и могут использоваться для моментальных изменений через
CSS свойства или классы.:not(),
:nth-last-child()) полностью поддерживаются, что позволяет
строить сложные селекторы без дублирования кода.Псевдоэлементы создают виртуальные элементы внутри выбранного узла
для визуальных эффектов. Наиболее часто используются
::before и ::after. В отличие от
псевдоклассов, они не присутствуют в DOM напрямую, но их стили можно
изменять через Umbrella JS, управляя стилевыми свойствами элемента.
Пример работы с псевдоэлементами:
u('p::before').css({
content: '"→ "',
color: 'blue',
fontWeight: 'bold'
});
u('p::after').css({
content: '" [конец]"',
color: 'gray',
fontStyle: 'italic'
});
Особенности:
content обязательно для псевдоэлементов
::before и ::after. Без него визуальных
изменений не будет.div.notice::before.color,
font-weight, display) работает аналогично
обычным элементам.Umbrella JS позволяет строить сложные конструкции, например выборку элементов по состоянию и добавление псевдоэлементов к ним:
// Добавляем стрелку перед каждым активным пунктом меню
u('li.active::before').css({
content: '"→ "',
color: 'green'
});
// Стилизация последнего абзаца с помощью псевдоэлемента
u('p:last-child::after').css({
content: '"*"',
color: 'red'
});
Особенности:
u('li:first-child::after, li:last-child::after').append,
remove, html) не применимы.:hover или
:focus, меняются только при изменении состояния браузера.
Для анимаций и интерактивных эффектов часто используют CSS-классы вместе
с Umbrella JS.:nth-child, :not), но Umbrella JS делегирует
выборку через стандартный querySelectorAll, что
обеспечивает современную совместимость.::before и ::after чаще всего используются
вместе с css методами Umbrella JS, изменяя
content и стили.Псевдоклассы и псевдоэлементы в Umbrella JS обеспечивают гибкую манипуляцию элементами, позволяя минимизировать дублирование кода и создавать динамические, визуально насыщенные интерфейсы с лаконичным синтаксисом. Их грамотное использование облегчает работу с DOM и повышает читаемость и поддерживаемость кода.