Предпочтение селекторов
Когда элемент соответствует более чем одному селектору, Unity рассматривает несколько факторов, чтобы определить, какой селектор имеет приоритет.
Как Unity определяет приоритет зависит от того, находятся ли конфликтующие селекторы в одной таблице стилей или в разных таблицах стилей.
Приоритет для селекторов в одной таблице стилей
Когда элемент соответствует нескольким селекторам из одной и той же таблицы стилей, селектор с наивысшим специфичность имеет приоритет.
Если оба селектора имеют одинаковые специфичность, селектор, который появляется последним в USS файл имеет приоритет.
Приоритет для селекторов в различных таблицах стилей
Когда элемент соответствует нескольким селекторам в разных таблицах стилей, Unity определяет приоритет в соответствии со следующими факторами в следующем порядке:
- Тип таблицы стилей: Селекторы из пользовательских таблиц стилей имеют приоритет над селекторами из таблиц стилей по умолчанию Unity.
- Специфичность селектора: Если оба селектора находятся в таблице стилей одного типа, то приоритет имеет селектор с наивысшей специфичностью
- Положения таблиц стилей в иерархии элементов: Если оба селектора имеют одинаковую специфичность, приоритет имеет тот селектор, таблица стилей которого применяется на самом низком уровне иерархии элементов.
- Положения селекторов в их таблицах стилей: Если вы применяете обе таблицы стилей на одном и том же уровне иерархии, приоритет имеет селектор, ближе всего расположенный к концу его файла USS.
Специфичность селекторов
Специфичность селектора является показателем релевантности. Чем выше специфичность, тем более релевантным является селектор для элементов, которые он соответствует.
- Имя селекторов более специфичны, чем Класс селекторов.
- Класс селекторы более специфичны, чем Тип селекторов.
- Тип селекторов являются более специфическими, чем Универсальный (
*) селектор. - Универсальные селекторы имеют самую низкую специфичность.
Переопределение стиля
Вы можете стилизовать элемент в UI Toolkit следующим образом:
- В файле USS напишите селектор, который может влиять на элемент.
- В документе UXML, где определен элемент, установите встроенные стили.
- В сценарии C#, получает ссылку на элемент и устанавливает его встроенный стиль.
- Для наследуемого свойства элемент получает значение от своего родительского элемента.
Если вы примените несколько методов стилизации к элементу, он будет подвергнут переопределению стиля.
Применённые стили переопределяют унаследованные
Стили, которые напрямую нацелены на элемент, имеют преимущество перед стилями, наследуемыми элементом, даже если наследуемые стили определены в селекторе с более высокой специфичностью.
Встроенные стили переопределяют стили USS
Встроенные стили, которые вы применяете к элементам в документе UXML, имеют преимущество перед стилями USS. Они имеют более высокую специфичность, чем селектор USS.
Примечание: USS не поддерживает !important правило, применяемое для переопределения объявлений стиля в CSS.
Стили из C# переопределяют встроенные стили и стили USS
Стили, заданные из скрипта C#, переопределяют стили USS и встроенные стили из документа UXML. У них наивысшая специфичность.