|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- # selector-max-specificity
-
- Limit the specificity of selectors.
-
- <!-- prettier-ignore -->
- ```css
- .foo, #bar.baz span, #hoo { color: pink; }
- /** ↑ ↑ ↑
- * Each of these selectors */
- ```
-
- Visit the [Specificity Calculator](https://specificity.keegan.st) for visual representation of selector specificity.
-
- This rule ignores selectors with variable interpolation (`#{$var}`, `@{var}`, `$(var)`).
-
- This rule resolves nested selectors before counting the specificity of a selector. Each selector in a [selector list](https://www.w3.org/TR/selectors4/#selector-list) is evaluated separately.
-
- ## Options
-
- `string`: Maximum specificity allowed.
-
- Format is `"id,class,type"`, as laid out in the [W3C selector spec](https://drafts.csswg.org/selectors/#specificity-rules).
-
- For example, with `"0,2,0"`:
-
- The following patterns are considered violations:
-
- <!-- prettier-ignore -->
- ```css
- #foo {}
- ```
-
- <!-- prettier-ignore -->
- ```css
- .foo .baz .bar {}
- ```
-
- <!-- prettier-ignore -->
- ```css
- .foo .baz {
- & .bar {}
- }
- ```
-
- <!-- prettier-ignore -->
- ```css
- .foo {
- color: red;
- @nest .baz .bar & {
- color: blue;
- }
- }
- ```
-
- The following patterns are _not_ considered violations:
-
- <!-- prettier-ignore -->
- ```css
- div {}
- ```
-
- <!-- prettier-ignore -->
- ```css
- .foo div {}
- ```
-
- <!-- prettier-ignore -->
- ```css
- .foo div {
- & div a {}
- }
- ```
-
- <!-- prettier-ignore -->
- ```css
- .foo {
- & .baz {}
- }
- ```
-
- <!-- prettier-ignore -->
- ```css
- .foo {
- color: red;
- @nest .baz & {
- color: blue;
- }
- }
- ```
-
- ## Optional secondary options
-
- ### `ignoreSelectors: ["/regex/", /regex/, "string"]`
-
- Given:
-
- ```
- [
- "0,2,0",
- {
- ignoreSelectors: [":global", ":local", "/my-/"]
- }
- ]
- ```
-
- The following patterns are _not_ considered violations:
-
- <!-- prettier-ignore -->
- ```css
- :global(.foo) .bar {}
- ```
-
- <!-- prettier-ignore -->
- ```css
- :local(.foo.bar)
- ```
-
- <!-- prettier-ignore -->
- ```css
- :local(.foo, :global(.bar).baz)
- ```
-
- The following patterns are considered violations:
-
- <!-- prettier-ignore -->
- ```css
- :global(.foo) .bar.baz {}
- ```
-
- <!-- prettier-ignore -->
- ```css
- :local(.foo.bar.baz)
- ```
-
- <!-- prettier-ignore -->
- ```css
- :local(.foo, :global(.bar), .foo.bar.baz)
- ```
|