Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[css-syntax-3] Clarify why declarations after/before invalid rule error should be separated #11271

Open
cdoublev opened this issue Nov 25, 2024 · 0 comments

Comments

@cdoublev
Copy link
Collaborator

cdoublev commented Nov 25, 2024

When a rule is interleaved between declarations and triggers an "invalid rule error", the spec splits the declarations:

  • If an invalid rule error was returned
    If decls is not empty, append decls to rules, and set decls to a fresh empty list of declarations.

An invalid rule error is produced in a nested context from any list of tokens that:

  • is not a valid rule or declaration in the context
  • is not an invalid at-rule in the context (it does not start with an at-keyword)
  • does not start with a dashed identifier followed by :
  • does not include a non nested "stop token": } and ;
  • ends with a {}-block

Examples: {}, . {}, div: hover {}, undeclared-ns|* {}.

If I am not mistaken, this intentionally takes space for future selector syntaxes. #8738 (comment) touches on that.

It might be useful to add a note, since that is not what the current version of Chrome and FF does:

const sheet = new CSSStyleSheet
sheet.insertRule(`
  style {
    color: green;
    . {}
    color: orange;
    undeclared-ns|style {}
    color: red;
  }
`)
sheet.cssRules[0].cssText; // style { color: red; }

There does not seem to be any corresponding test on WPT.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant