There are over 170 rules that help you:
The rules:
- are for standard CSS syntax only
- are generally useful; not tied to idiosyncratic patterns
- have a clear and unambiguous finished state
- have a singular purpose; don't overlap with other rules
A rule's name is split into two parts:
- the thing the rule applies to, e.g.
at-rule
- what the rule is checking, e.g.
disallowed-list
Unless it applies to the whole source, then there is no first part.
You can avoid errors with these no
rules.
Disallow descending things with these no-descending
rules.
no-descending-specificity
: Disallow selectors of lower specificity from coming after overriding selectors of higher specificity.
Disallow duplicates with these no-duplicate
rules.
declaration-block-no-duplicate-custom-properties
: Disallow duplicate custom properties within declaration blocks.declaration-block-no-duplicate-properties
: Disallow duplicate properties within declaration blocks (Autofixable).font-family-no-duplicate-names
: Disallow duplicate names within font families.keyframe-block-no-duplicate-selectors
: Disallow duplicate selectors within keyframe blocks.no-duplicate-at-import-rules
: Disallow duplicate@import
rules.no-duplicate-selectors
: Disallow duplicate selectors.
Disallow empty things with these no-empty
rules.
block-no-empty
: Disallow empty blocks.comment-no-empty
: Disallow empty comments.no-empty-source
: Disallow empty sources.
Disallow invalid syntax with these (sometimes implicit) no-invalid
rules.
color-no-invalid-hex
: Disallow invalid hex colors.function-calc-no-unspaced-operator
: Disallow invalid unspaced operator withincalc
functions (Autofixable).keyframe-declaration-no-important
: Disallow invalid!important
within keyframe declarations.named-grid-areas-no-invalid
: Disallow invalid named grid areas.no-invalid-double-slash-comments
: Disallow invalid double-slash comments.no-invalid-position-at-import-rule
: Disallow invalid position@import
rules.string-no-newline
: Disallow invalid newlines within strings.
Disallow irregular things with these no-irregular
rules.
no-irregular-whitespace
: Disallow irregular whitespace.
Disallow missing things with these no-missing
rules.
custom-property-no-missing-var-function
: Disallow missingvar
function for custom properties.font-family-no-missing-generic-family-keyword
: Disallow a missing generic family keyword within font families.
Disallow non-standard things with these no-nonstandard
rules.
function-linear-gradient-no-nonstandard-direction
: Disallow non-standard direction values for linear gradient functions.
Disallow overrides with these no-overrides
rules.
declaration-block-no-shorthand-property-overrides
: Disallow shorthand properties that override related longhand properties.
Disallow unknown things with these no-unknown
rules.
annotation-no-unknown
: Disallow unknown annotations.at-rule-no-unknown
: Disallow unknown at-rules.function-no-unknown
: Disallow unknown functions.media-feature-name-no-unknown
: Disallow unknown media feature names.no-unknown-animations
: Disallow unknown animations.property-no-unknown
: Disallow unknown properties.selector-pseudo-class-no-unknown
: Disallow unknown pseudo-class selectors.selector-pseudo-element-no-unknown
: Disallow unknown pseudo-element selectors.selector-type-no-unknown
: Disallow unknown type selectors.unit-no-unknown
: Disallow unknown units.
You can enforce non-stylistic conventions with these no
and list
rules. They are powerful rules for making your CSS consistent. You'll need to configure most of them to suit your needs.
Allow, disallow or require things with these allowed-list
, disallowed-list
, required-list
and no
rules.
at-rule-allowed-list
: Specify a list of allowed at-rules.at-rule-disallowed-list
: Specify a list of disallowed at-rules.at-rule-no-vendor-prefix
: Disallow vendor prefixes for at-rules (Autofixable).at-rule-property-required-list
: Specify a list of required properties for an at-rule.
color-hex-alpha
: Require or disallow alpha channel for hex colors.color-named
: Require (where possible) or disallow named colors.color-no-hex
: Disallow hex colors.
comment-word-disallowed-list
: Specify a list of disallowed words within comments.
declaration-no-important
: Disallow!important
within declarations.declaration-property-unit-allowed-list
: Specify a list of allowed property and unit pairs within declarations.declaration-property-unit-disallowed-list
: Specify a list of disallowed property and unit pairs within declarations.declaration-property-value-allowed-list
: Specify a list of allowed property and value pairs within declarations.declaration-property-value-disallowed-list
: Specify a list of disallowed property and value pairs within declarations.
function-allowed-list
: Specify a list of allowed functions.function-disallowed-list
: Specify a list of disallowed functions.function-url-no-scheme-relative
: Disallow scheme-relative URLs.function-url-scheme-allowed-list
: Specify a list of allowed URL schemes.function-url-scheme-disallowed-list
: Specify a list of disallowed URL schemes.
length-zero-no-unit
: Disallow units for zero lengths (Autofixable).
media-feature-name-allowed-list
: Specify a list of allowed media feature names.media-feature-name-disallowed-list
: Specify a list of disallowed media feature names.media-feature-name-no-vendor-prefix
: Disallow vendor prefixes for media feature names (Autofixable).media-feature-name-value-allowed-list
: Specify a list of allowed media feature name and value pairs.
property-allowed-list
: Specify a list of allowed properties.property-disallowed-list
: Specify a list of disallowed properties.property-no-vendor-prefix
: Disallow vendor prefixes for properties (Autofixable).
rule-selector-property-disallowed-list
: Specify a list of disallowed properties for selectors within rules.
selector-attribute-name-disallowed-list
: Specify a list of disallowed attribute names.selector-attribute-operator-allowed-list
: Specify a list of allowed attribute operators.selector-attribute-operator-disallowed-list
: Specify a list of disallowed attribute operators.selector-combinator-allowed-list
: Specify a list of allowed combinators.selector-combinator-disallowed-list
: Specify a list of disallowed combinators.selector-disallowed-list
: Specify a list of disallowed selectors.selector-no-qualifying-type
: Disallow qualifying a selector by type.selector-no-vendor-prefix
: Disallow vendor prefixes for selectors (Autofixable).selector-pseudo-class-allowed-list
: Specify a list of allowed pseudo-class selectors.selector-pseudo-class-disallowed-list
: Specify a list of disallowed pseudo-class selectors.selector-pseudo-element-allowed-list
: Specify a list of allowed pseudo-element selectors.selector-pseudo-element-disallowed-list
: Specify a list of disallowed pseudo-element selectors.
unit-allowed-list
: Specify a list of allowed units.unit-disallowed-list
: Specify a list of disallowed units.
value-no-vendor-prefix
: Disallow vendor prefixes for values (Autofixable).
Apply limits with these max
and min
rules.
declaration-block-single-line-max-declarations
: Limit the number of declarations within a single-line declaration block.declaration-property-max-values
: Limit the number of values for a list of properties within declarations.max-nesting-depth
: Limit the depth of nesting.number-max-precision
: Limit the number of decimal places allowed in numbers.selector-max-attribute
: Limit the number of attribute selectors in a selector.selector-max-class
: Limit the number of classes in a selector.selector-max-combinators
: Limit the number of combinators in a selector.selector-max-compound-selectors
: Limit the number of compound selectors in a selector.selector-max-id
: Limit the number of ID selectors in a selector.selector-max-pseudo-class
: Limit the number of pseudo-classes in a selector.selector-max-specificity
: Limit the specificity of selectors.selector-max-type
: Limit the number of type selectors in a selector.selector-max-universal
: Limit the number of universal selectors in a selector.time-min-milliseconds
: Limit the minimum number of milliseconds for time values.
Enforce one representation of things that have multiple with these notation
(sometimes implicit) rules.
alpha-value-notation
: Specify percentage or number notation for alpha-values (Autofixable).color-function-notation
: Specify modern or legacy notation for color-functions (Autofixable).color-hex-length
: Specify short or long notation for hex colors (Autofixable).font-weight-notation
: Specify numeric or named notation for font weights (Autofixable).hue-degree-notation
: Specify number or angle notation for degree hues (Autofixable).import-notation
: Specify string or URL notation for@import
rules (Autofixable).keyframe-selector-notation
: Specify keyword or percentage notation for keyframe selectors (Autofixable).media-feature-range-notation
: Specify context or prefix notation for media feature ranges.selector-not-notation
: Specify simple or complex notation for:not()
pseudo-class selectors (Autofixable).selector-pseudo-element-colon-notation
: Specify single or double colon notation for applicable pseudo-element selectors (Autofixable).
Enforce naming conventions with these pattern
rules.
comment-pattern
: Specify a pattern for comments.custom-media-pattern
: Specify a pattern for custom media query names.custom-property-pattern
: Specify a pattern for custom properties.keyframes-name-pattern
: Specify a pattern for keyframe names.selector-class-pattern
: Specify a pattern for class selectors.selector-id-pattern
: Specify a pattern for ID selectors.selector-nested-pattern
: Specify a pattern for the selectors of rules nested within rules.
Require or disallow quotes with these quotes
rules.
font-family-name-quotes
: Require or disallow quotes for font family names (Autofixable).function-url-quotes
: Require or disallow quotes for urls.selector-attribute-quotes
: Require or disallow quotes for attribute values (Autofixable).
Disallow redundancy with these no-redundant
rules.
declaration-block-no-redundant-longhand-properties
: Disallow redundant longhand properties within declaration-block.shorthand-property-no-redundant-values
: Disallow redundant values within shorthand properties (Autofixable).
We have frozen these rules — we won't fix bugs nor add options, and we will deprecate then remove them in future releases. We recommend you use a pretty printer (like Prettier) alongside Stylelint rather than these rules. If you prefer to use Stylelint to enforce stylistic consistency, you can migrate the rules you need to a plugin.
The whitespace rules allow you to enforce an empty line, a single space, a newline or no space in some specific part of the stylesheet.
The whitespace rules combine two sets of keywords:
before
,after
andinside
to specify where the whitespace (if any) is expectedempty-line
,space
andnewline
to specify whether a single empty line, a single space, a single newline or no space is expected there
For example, specifying if a single empty line or no space must come before all the comments in a stylesheet:
comment-empty-line-before
:string
-"always"|"never"
a {}
←
/* comment */ ↑
↑
/** ↑
* This empty line */
Additionally, some whitespace rules use an additional set of keywords:
comma
,colon
,semicolon
,opening-brace
,closing-brace
,opening-parenthesis
,closing-parenthesis
,operator
orrange-operator
are used if a specific piece of punctuation in the thing is being targeted
For example, specifying if a single space or no space must follow a comma in a function:
function-comma-space-after
:string
-"always"|"never"
a { transform: translate(1, 1) }
/** ↑
* The space after this commas */
The plural of the punctuation is used for inside
rules. For example, specifying if a single space or no space must be inside the parentheses of a function:
function-parentheses-space-inside
:string
-"always"|"never"
a { transform: translate( 1, 1 ); }
/** ↑ ↑
* The space inside these two parentheses */
value-keyword-case
: Specify lowercase or uppercase for keywords values (Autofixable).
function-name-case
: Specify lowercase or uppercase for function names (Autofixable).
custom-property-empty-line-before
: Require or disallow an empty line before custom properties (Autofixable).
selector-type-case
: Specify lowercase or uppercase for type selectors (Autofixable).
rule-empty-line-before
: Require or disallow an empty line before rules (Autofixable).
at-rule-empty-line-before
: Require or disallow an empty line before at-rules (Autofixable).
comment-empty-line-before
: Require or disallow an empty line before comments (Autofixable).comment-whitespace-inside
: Require or disallow whitespace on the inside of comment markers (Autofixable).
color-hex-case
: Specify lowercase or uppercase for hex colors (Autofixable).
function-comma-newline-after
: Require a newline or disallow whitespace after the commas of functions (Autofixable).function-comma-newline-before
: Require a newline or disallow whitespace before the commas of functions (Autofixable).function-comma-space-after
: Require a single space or disallow whitespace after the commas of functions (Autofixable).function-comma-space-before
: Require a single space or disallow whitespace before the commas of functions (Autofixable).function-max-empty-lines
: Limit the number of adjacent empty lines within functions (Autofixable).function-parentheses-newline-inside
: Require a newline or disallow whitespace on the inside of the parentheses of functions (Autofixable).function-parentheses-space-inside
: Require a single space or disallow whitespace on the inside of the parentheses of functions (Autofixable).function-whitespace-after
: Require or disallow whitespace after functions (Autofixable).
number-leading-zero
: Require or disallow a leading zero for fractional numbers less than 1 (Autofixable).number-no-trailing-zeros
: Disallow trailing zeros in numbers (Autofixable).
string-quotes
: Specify single or double quotes around strings (Autofixable).
unit-case
: Specify lowercase or uppercase for units (Autofixable).
value-list-comma-newline-after
: Require a newline or disallow whitespace after the commas of value lists (Autofixable).value-list-comma-newline-before
: Require a newline or disallow whitespace before the commas of value lists.value-list-comma-space-after
: Require a single space or disallow whitespace after the commas of value lists (Autofixable).value-list-comma-space-before
: Require a single space or disallow whitespace before the commas of value lists (Autofixable).value-list-max-empty-lines
: Limit the number of adjacent empty lines within value lists (Autofixable).
property-case
: Specify lowercase or uppercase for properties (Autofixable).
declaration-bang-space-after
: Require a single space or disallow whitespace after the bang of declarations (Autofixable).declaration-bang-space-before
: Require a single space or disallow whitespace before the bang of declarations (Autofixable).declaration-colon-newline-after
: Require a newline or disallow whitespace after the colon of declarations (Autofixable).declaration-colon-space-after
: Require a single space or disallow whitespace after the colon of declarations (Autofixable).declaration-colon-space-before
: Require a single space or disallow whitespace before the colon of declarations (Autofixable).declaration-empty-line-before
: Require or disallow an empty line before declarations (Autofixable).
declaration-block-semicolon-newline-after
: Require a newline or disallow whitespace after the semicolons of declaration blocks (Autofixable).declaration-block-semicolon-newline-before
: Require a newline or disallow whitespace before the semicolons of declaration blocks.declaration-block-semicolon-space-after
: Require a single space or disallow whitespace after the semicolons of declaration blocks (Autofixable).declaration-block-semicolon-space-before
: Require a single space or disallow whitespace before the semicolons of declaration blocks (Autofixable).declaration-block-trailing-semicolon
: Require or disallow a trailing semicolon within declaration blocks (Autofixable).
block-closing-brace-empty-line-before
: Require or disallow an empty line before the closing brace of blocks (Autofixable).block-closing-brace-newline-after
: Require a newline or disallow whitespace after the closing brace of blocks (Autofixable).block-closing-brace-newline-before
: Require a newline or disallow whitespace before the closing brace of blocks (Autofixable).block-closing-brace-space-after
: Require a single space or disallow whitespace after the closing brace of blocks.block-closing-brace-space-before
: Require a single space or disallow whitespace before the closing brace of blocks (Autofixable).block-opening-brace-newline-after
: Require a newline after the opening brace of blocks (Autofixable).block-opening-brace-newline-before
: Require a newline or disallow whitespace before the opening brace of blocks (Autofixable).block-opening-brace-space-after
: Require a single space or disallow whitespace after the opening brace of blocks (Autofixable).block-opening-brace-space-before
: Require a single space or disallow whitespace before the opening brace of blocks (Autofixable).
selector-attribute-brackets-space-inside
: Require a single space or disallow whitespace on the inside of the brackets within attribute selectors (Autofixable).selector-attribute-operator-space-after
: Require a single space or disallow whitespace after operators within attribute selectors (Autofixable).selector-attribute-operator-space-before
: Require a single space or disallow whitespace before operators within attribute selectors (Autofixable).selector-combinator-space-after
: Require a single space or disallow whitespace after the combinators of selectors (Autofixable).selector-combinator-space-before
: Require a single space or disallow whitespace before the combinators of selectors (Autofixable).selector-descendant-combinator-no-non-space
: Disallow non-space characters for descendant combinators of selectors (Autofixable).selector-max-empty-lines
: Limit the number of adjacent empty lines within selectors (Autofixable).selector-pseudo-class-case
: Specify lowercase or uppercase for pseudo-class selectors (Autofixable).selector-pseudo-class-parentheses-space-inside
: Require a single space or disallow whitespace on the inside of the parentheses within pseudo-class selectors (Autofixable).selector-pseudo-element-case
: Specify lowercase or uppercase for pseudo-element selectors (Autofixable).
selector-list-comma-newline-after
: Require a newline or disallow whitespace after the commas of selector lists (Autofixable).selector-list-comma-newline-before
: Require a newline or disallow whitespace before the commas of selector lists (Autofixable).selector-list-comma-space-after
: Require a single space or disallow whitespace after the commas of selector lists (Autofixable).selector-list-comma-space-before
: Require a single space or disallow whitespace before the commas of selector lists (Autofixable).
media-feature-colon-space-after
: Require a single space or disallow whitespace after the colon in media features (Autofixable).media-feature-colon-space-before
: Require a single space or disallow whitespace before the colon in media features (Autofixable).media-feature-name-case
: Specify lowercase or uppercase for media feature names (Autofixable).media-feature-parentheses-space-inside
: Require a single space or disallow whitespace on the inside of the parentheses within media features (Autofixable).media-feature-range-operator-space-after
: Require a single space or disallow whitespace after the range operator in media features (Autofixable).media-feature-range-operator-space-before
: Require a single space or disallow whitespace before the range operator in media features (Autofixable).
media-query-list-comma-newline-after
: Require a newline or disallow whitespace after the commas of media query lists (Autofixable).media-query-list-comma-newline-before
: Require a newline or disallow whitespace before the commas of media query lists.media-query-list-comma-space-after
: Require a single space or disallow whitespace after the commas of media query lists (Autofixable).media-query-list-comma-space-before
: Require a single space or disallow whitespace before the commas of media query lists (Autofixable).
at-rule-name-case
: Specify lowercase or uppercase for at-rules names (Autofixable).at-rule-name-newline-after
: Require a newline after at-rule names.at-rule-name-space-after
: Require a single space after at-rule names (Autofixable).at-rule-semicolon-newline-after
: Require a newline after the semicolon of at-rules (Autofixable).at-rule-semicolon-space-before
: Require a single space or disallow whitespace before the semicolons of at-rules.
indentation
: Specify indentation (Autofixable).linebreaks
: Specify unix or windows linebreaks (Autofixable).max-empty-lines
: Limit the number of adjacent empty lines (Autofixable).max-line-length
: Limit the length of a line.no-empty-first-line
: Disallow empty first lines (Autofixable).no-eol-whitespace
: Disallow end-of-line whitespace (Autofixable).no-extra-semicolons
: Disallow extra semicolons (Autofixable).no-missing-end-of-source-newline
: Disallow missing end-of-source newlines (Autofixable).unicode-bom
: Require or disallow Unicode BOM.