Version: 2022.1
伪类
USS properties

Selector precedence

When an element matches more than one selector, Unity considers several factors to determine which selector takes precedence.

Unity 如何确定优先级取决于冲突的选择器是在同一个样式表中还是在不同的样式表中。

Precedence for selectors in the same style sheet

如果一个元素匹配多个选择器,则具有最高特异性的选择器优先。

如果两个选择器具有相同的特异性,USS 文件中最后出现的选择器优先。

Precedence for selectors in different style sheets

When an element matches multiple selectors in different style sheets, Unity determines precedence according to the following factors in this order:

  1. The type of style sheet: Selectors from user-defined style sheets takes precedence over selectors from default Unity style sheets.
  2. 选择器特异性:如果两个选择器都在同一类型的样式表中,则具有最高特异性的选择器优先
  3. 样式表在元素层级结构中的位置:如果两个选择器具有相同的特异性,则其样式表在元素层级结构中最低位置被应用的选择器优先。
  4. The selectors’ positions in their style sheets: If you apply both style sheets at the same level of the hierarchy, the selector closest to the end of its USS file takes precedence.

Selector specificity

选择器特异性是相关性的度量。特异性越高,选择器与其匹配的元素越相关。

  • Name selectors are more specific than Class selectors.
  • Class selectors are more specific than Type selectors.
  • Type selectors are more specific than the Universal (*) selector.
  • Universal selectors have the lowest specificity.

Style overrides

You can style an element in UI Toolkit by the following:

  • In a USS file, write a selector that can affect the button.
  • In the UXML document where the button is defined, set inline styles.
  • In a C# script, get a reference to a button and set its inline style.
  • For an inherited property, the element gets the value from its parent element.

Applied styles override inherited styles

直接针对元素的样式优先于元素继承的样式,即使继承的样式是在具有更高特异性的选择器中定义的。

Inline styles override USS styles

Inline styles that you apply to elements in a UXML document take precedence over USS styles. They have a higher specificity than USS selectors.

Note: USS doesn’t support the !important rule used to override style declarations in CSS.

C# styles override inline and USS styles

Styles that you set in a C# script override USS styles and inline styles set in a UXML document. They have the highest specificity.

其他资源

伪类
USS properties