Csswg-drafts: [cssom] getComputedStyle for ::before::marker or ::after::marker

Created on 28 Oct 2019  路  5Comments  路  Source: w3c/csswg-drafts

From https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle, the signature is

getComputedStyle(elt, pseudoElt)

where pseudoElt is parsed as a <pseudo-element-selector>.

For example, ::before or ::marker are <pseudo-element-selector>s.

However, https://drafts.csswg.org/css-pseudo-4/#marker-pseudo allows ::before::marker and ::after::marker in stylesheets. These are not a single <pseudo-element-selector>, but it seems useful for authors to expose their styles via getComputedStyle.

So maybe we could allow one of these:

getComputedStyle(elt, "::before::marker")
getComputedStyle(elt, "::before", "::marker")
cssom-1

All 5 comments

I guess there's also the 3rd possibility of allowing a CSSPseudoElement as the 1st argument, then

getComputedStyle(elt.pseudo("::before"), "::marker")
getComputedStyle(elt.pseudo("::before").pseudo("::marker"))

Regarding these two options:

getComputedStyle(elt, "::before::marker")
getComputedStyle(elt, "::before", "::marker")

My first concern for the second case is that it is bad for compatibility/progressive enhancement: existing browsers will silently ignore the final parameter & just return the ::before styles, with no way to catch the difference.

However, now that I actually test it, it seems like the results for unrecognized selector strings aren't actually useful for catching the difference, either! See discussion in #3980.

I'm wondering whether we can just ban nested pseudo-element of this kind from being used as selector as a whole...

@upsuper There are various resolution in favour of nested pseudo-elements. See https://github.com/w3c/csswg-drafts/issues/3876#issuecomment-488482816 and https://github.com/w3c/csswg-drafts/issues/3836#issuecomment-490559213

It would be good if the solutions here and in #4487 were consistent.

Was this page helpful?
0 / 5 - 0 ratings