sass/sass

Deprecate reference combinators

nex3 opened this issue · 3 comments

nex3 commented

These should be on our radar, although we may want to wait until they're implemented somewhere before we support them. See Selectors Level 4.

Here's a page tracking browser support.

Tasks:

  • Deprecate existing behavior in stable.
  • Remove behavior from master.

I don't think this is here to stay; as the issue says it's a lot easier to implement as a functional pseudoclass. The syntax is really ugly, too.

quickly looking in Chrome (latest and Canary), Firefox (latest and Aurora) and Opera (latest(presto)). There seems to be varied support for level 4 selectors now. I've found this test (wrongly named as CSS4) here -

http://css4-selectors.com/browser-selector-test/

Chrome -

current -

Indeterminate-value pseudo-class (E:indeterminate)
Default option pseudo-class (E:default)
Validity pseudo-class (E:in-range)
Validity pseudo-class (E:out-of-range)
Optionality pseudo-class (E:required)
Optionality pseudo-class (E:optional)
Mutability pseudo-class (E:read-only)
Mutability pseudo-class (E:read-write)

canary -

Indeterminate-value pseudo-class (E:indeterminate)
Default option pseudo-class (E:default)
Validity pseudo-class (E:in-range)
Validity pseudo-class (E:out-of-range)
Optionality pseudo-class (E:required)
Optionality pseudo-class (E:optional)
Mutability pseudo-class (E:read-only)
Mutability pseudo-class (E:read-write)

Firefox -

current -

Indeterminate-value pseudo-class (E:indeterminate)
Default option pseudo-class (E:default)
Validity pseudo-class (E:in-range)
Validity pseudo-class (E:out-of-range)
Optionality pseudo-class (E:required)
Optionality pseudo-class (E:optional)

aurora -

Indeterminate-value pseudo-class (E:indeterminate)
Default option pseudo-class (E:default)
Validity pseudo-class (E:in-range)
Validity pseudo-class (E:out-of-range)
Optionality pseudo-class (E:required)
Optionality pseudo-class (E:optional)

Opera -

current -

Indeterminate-value pseudo-class (E:indeterminate)
Default option pseudo-class (E:default)
Validity pseudo-class (E:in-range)
Validity pseudo-class (E:out-of-range)
Optionality pseudo-class (E:required)
Optionality pseudo-class (E:optional)
Mutability pseudo-class (E:read-only)
Mutability pseudo-class (E:read-write)

Total list of level 4 selectors tested -

Negation pseudo-class (E:not(s1, s2))
Matches-any pseudo-class (E:matches(s1, s2))
Local link pseudo-class (E:local-link)
Time-dimensional pseudo-class (E:current)
Indeterminate-value pseudo-class (E:indeterminate)
Default option pseudo-class (E:default)
Validity pseudo-class (E:in-range)
Validity pseudo-class (E:out-of-range)
Optionality pseudo-class (E:required)
Optionality pseudo-class (E:optional)
Mutability pseudo-class (E:read-only)
Mutability pseudo-class (E:read-write)
Structural pseudo-class (E:nth-match(n of selector))
Grid-Structural pseudo-class (E:column(selector))
Grid-Structural pseudo-class (E:nth-column(n))
Grid-Structural pseudo-class (E:nth-last-column(n))
Attribute case-sensitivity (E[foo='bar' i])
Reference combination (E /foo/ F)
Subject of a selector with Child combinator (E! > F)
Hyperlink pseudo-class (E:any-link)
Dir pseudo-class (E:dir(*))

Just thought I'd do a little testing to see what browsers are supporting what and where to keep the issue up to date a little.

(up to date browser == latest download as of time of posting this)

nex3 commented

Sass has supported this since afdf0e8, but it's since been removed from the specification so we should deprecate it.