Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Селекторы определяют, на какие элементы влияют правила USS. Когда Unity применяет таблицу стилей к визуальному дереву, она сопоставляет элементы с селекторами. Если элемент соответствует селектору, Unity применяет правило стиля селектора к элементу.

USS поддерживает несколько типов простых и сложных селекторов, соответствующих элементы на основе различных критериев, таких как:

  • Имя класса C#
  • Назначенное свойство name
  • Список классов USS
  • Положение элемента в визуальном дереве и его отношение к другим элементам.

Он также поддерживает псевдоклассы, которые можно использовать с селекторами для выбора элементов, находящихся в определенном состоянии.

Если элемент соответствует более чем одному селектору, Unity применяет стили из того селектора, который имеет приоритет.

Поддерживаемые типы селекторов

USS поддерживает набор простых селекторов, которые аналогичны, но не идентичны простым селекторам в CSS. Он также поддерживает подмножество сложных селекторов и псевдоклассов CSS.

Простые селекторы

В таблице ниже представлен краткий справочник по простым селекторам USS. Подробнее см. в разделе Простые селекторы.

Тип селектора: Синтаксис: Совпадения:
C# type Type {...} Элементы определенного типа C#
USS class .class {...} Элементы с присвоенным классом USS
Name #name {..} Элементы с назначенным атрибутом name
Wildcard * {...} Любой элемент

Сложные селекторы

В таблице ниже представлен краткий справочник по комплексным селекторам USS. Подробнее см. в разделе Комплексные селекторы.

Тип селектора: Синтаксис: Совпадения:
Descendant selector selector1 selector2 {...} Любые потомки первого селектора на любом уровне, которые также соответствуют второму селектору.
Child selector selector1 > selector2 {...} Любые прямые потомки (дочерние элементы) первого селектора, которые также соответствуют второму селектору..
Selector list selector1, selector2, selector3 {..} Любой элемент, который соответствует любым селекторам в списке. Любой элемент, который соответствует любым селекторам в списке. Список может содержать любое сочетание простых и сложных селекторов.

Pseudo-classes

В таблице ниже представлен краткий справочник по простым селекторам USS. Подробнее см. в разделе Псевдоклассы.

Pseudo-class Соответствует элементу, когда
:hover Курсор находится над элементом.
:active Пользователь взаимодействует с элементом.
:inactive Пользователь перестает взаимодействовать с элементом.
:focus Элемент имеет фокус.
:selected Н/Д. Unity не использует это псевдосостояние.
:disabled Элемент настроен на enabled == false.
:enabled Элемент настроен на enabled == true.
:checked Элемент — это элемент Toggle, и он включен.
:root Элемент является корневым элементом (элемент самого высокого уровня в визуальном дереве).

Использование списков выбора

Чтобы применить один и тот же стиль к нескольким типам элементов, вы можете использовать список выбора в любом правиле стиля. Список селекторов состоит из двух или более селекторов, разделенных запятыми. Он может содержать любую комбинацию простых и сложных селекторов и соответствует любому элементу, который соответствует хотя бы одному селектору в списке.

Синтаксис:

selector1, selector2 {...}

Список селекторов эквивалентен нескольким селекторам, каждый из которых объявляет одно и то же правило стиля.

Пример:

Для приведенного выше примера документа UXML следующие два фрагмента USS имеют одинаковый эффект.

#container2, Button { background-color: pink; border-radius: 10px; } #container2 { background-color: pink; border-radius: 10px; } Button { background-color: pink; border-radius: 10px; }

Определение приоритета селектора

Когда элемент соответствует более чем одному селектору, Unity учитывает несколько факторов, чтобы определить, какой селектор имеет приоритет.

Как Unity определяет приоритет, зависит от того, находятся ли конфликтующие селекторы в одной таблице стилей или в разных таблицах стилей.

Приоритет селекторов в одной таблице стилей

Когда элемент соответствует нескольким селекторам из одной таблицы стилей, приоритет имеет селектор с наивысшей специфичностью.

Если оба селектора имеют одинаковую специализацию, селектор, который появляется последним в файле USS, имеет приоритет.

Приоритет селекторов в разных таблицах стилей

Когда элемент соответствует нескольким селекторам в разных таблицах стилей, Unity определяет приоритет в соответствии со следующими факторами в следующем порядке:

  1. Тип таблицы стилей: селекторы из пользовательских таблиц стилей имеют приоритет над селекторами из таблиц стилей Unity по умолчанию.
  2. Специфичность селектора. Если оба селектора относятся к таблице стилей одного типа, приоритет имеет селектор с наивысшей специфичностью
  3. .
  4. Позиции таблиц стилей в иерархии элементов: если оба селектора имеют одинаковую специфику, приоритет имеет селектор, чья таблица стилей применяется ниже всего в иерархии элементов.
  5. Положение селекторов в их таблицах стилей. Если вы применяете обе таблицы стилей на одном уровне иерархии, приоритет имеет селектор, ближайший к концу своего USS-файла.

Специфика селектора

Специфичность селектора – это показатель релевантности. Чем выше специфичность, тем более релевантен селектор элементам, которым он соответствует.

    Селекторы
  • Имени более точны, чем селекторы Класса.
  • Селекторы
  • Class более специфичны, чем селекторы C# Type.
  • Селекторы
  • типа C# более специфичны, чем селектор подстановочный знак (*).

Примененные стили и унаследованные стили

Стили, предназначенные непосредственно для элемента, имеют приоритет над стилями, которые наследует элемент, даже если унаследованные стили определены в селекторе с более высокой точностью.

Переопределение селекторов USS

Стили, которые вы применяете непосредственно к элементу, переопределяют стили, которые вы применяете через USS.

Примечание:
USS не поддерживает правило !important, используемое для переопределения объявлений стилей в CSS.

Встроенные стили

Встроенные стили, применяемые к элементам в документе UXML, имеют приоритет над стилями USS. Вы можете считать их более специфичными, чем селекторы USS.

Стили C#

Стили, заданные в C#, переопределяют любые другие стили, включая стили USS и встроенные стили. Вы можете считать их наиболее специфичными.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3