::before and ::after pseudo-elements always exist in the element tree, but most times they don't generate boxes in the box tree because content computes to none by default.
Is it similar for ::marker pseudo-elements? Do they always exist, but they only generate boxes if the display of the originating element has the list-item keyword? Or do ::marker pseudo-elements only exist if the originating element has the list-item keyword?
CSS Display handwaves the difference between the ::marker pseudo-element and the marker box generated by it, so it's not clear. CSS Pseudo isn't clear either.
The difference matters because Firefox and Chrome allow ::marker pseudo-elements to be originated by some tree-abiding pseudo-elements. So if ::marker always exist, this could potentially mean that the element tree has an infinite depth, which doesn't sound much right.
I see various possibilities:
::marker pseudo-elements are only created when display has the list-item keyword.
::marker always exist but are only originated by elements, ::before, and ::after. They can't be originated by other ::marker.
::marker always exist but are only originated by elements. Like ::before and ::after, they can't be originated by other pseudo-elements. This would be a breaking change for Firefox and Chrome.
::marker always exist and can be originated by elements or any tree-abiding pseudo-elements. The element tree has an infinite depth, but in practice this isn't much problematic because the box tree is finite.
::beforeand::afterpseudo-elements always exist in the element tree, but most times they don't generate boxes in the box tree becausecontentcomputes tononeby default.Is it similar for
::markerpseudo-elements? Do they always exist, but they only generate boxes if thedisplayof the originating element has thelist-itemkeyword? Or do::markerpseudo-elements only exist if the originating element has thelist-itemkeyword?CSS Display handwaves the difference between the
::markerpseudo-element and the marker box generated by it, so it's not clear. CSS Pseudo isn't clear either.The difference matters because Firefox and Chrome allow
::markerpseudo-elements to be originated by some tree-abiding pseudo-elements. So if::markeralways exist, this could potentially mean that the element tree has an infinite depth, which doesn't sound much right.I see various possibilities:
::markerpseudo-elements are only created whendisplayhas thelist-itemkeyword.::markeralways exist but are only originated by elements,::before, and::after. They can't be originated by other::marker.::markeralways exist but are only originated by elements. Like::beforeand::after, they can't be originated by other pseudo-elements. This would be a breaking change for Firefox and Chrome.::markeralways exist and can be originated by elements or any tree-abiding pseudo-elements. The element tree has an infinite depth, but in practice this isn't much problematic because the box tree is finite.