Closed
Bug 4834
Opened 26 years ago
Closed 26 years ago
too generous on pseudo-element matching
Categories
(Core :: CSS Parsing and Computation, defect, P3)
Tracking
()
VERIFIED
FIXED
M5
People
(Reporter: dbaron, Assigned: peterl-retired)
References
()
Details
You are being too generous on pseudo-element parsing. There can't be a space
before the ":after". See the above test, selector "P.four :after".
Other problems on this page are in bug 4833.
Comment 1•26 years ago
|
||
To be exact,
P.four :after
...should be parsed as meaning the same as:
P.four *:after
...i.e., it refers to the ":after" pseudo-element of *every* descendant of
any P elements with class=four. It does _not_, however, refer to the :after
pseudo-element of the P.four itself, which I guess is what is being done now
(I have not checked, though).
Reporter | ||
Comment 2•26 years ago
|
||
Yes. I now think Ian is right. I was looking at 5.10, which says:
Pseudo-classes are allowed anywhere in selectors while pseudo-elements
may only appear after the subject of the selector.
However, 5.3 says (I didn't see before how general this statement is)
If the universal selector is not the only component of a simple selector,
the "*" may be omitted.
This is *not* what you are currently doing. I tested this by adding a
"P.four:after" rule after the "P.four :after" rule, and it overrode the first.
This applies to other pseudo-elements and pseudo-classes. That is,
DIV :first-line == DIV *:first-line
:first-letter == *:first-letter (which only influences block-level elements)
P :before == P *:before
P :link == P *:link
A :link == A *:link (useless?)
etc.
Reporter | ||
Comment 3•26 years ago
|
||
******** IGNORE EVERYTHING ABOVE THIS LINE. ********
The problem is not parsing. The problem is in matching. You are matching
descendant selectors of the form "A *:pseudo-element" as matching the :pseudo-
element of A or a descendant of A rather than only descendants of A (and not A
itself).
This shows up in the following test:
http://www.fas.harvard.edu/~dbaron/csstest/pseudos
in the selectors
div.two :first-line
div.six :before
As described in the test, the first line of the second test paragraph should
not be purple, and the words "Beginning of an Element" should not appear at the
beginning of the eighth paragraph.
cc:ing troy. I'm not sure who should deal with this.
Assignee | ||
Updated•26 years ago
|
Status: NEW → ASSIGNED
Target Milestone: M5
Reporter | ||
Updated•26 years ago
|
Summary: too generous on pseudo-element parsing → too generous on pseudo-element matching
Assignee | ||
Updated•26 years ago
|
Status: ASSIGNED → RESOLVED
Closed: 26 years ago
Resolution: --- → FIXED
Assignee | ||
Comment 4•26 years ago
|
||
Fixed. Now "foo:bar" turns into "foo > :bar" and "foo :bar" turns into "foo >
*:bar".
Reporter | ||
Updated•26 years ago
|
Status: RESOLVED → VERIFIED
Reporter | ||
Comment 5•26 years ago
|
||
Verified fixed.
You need to log in
before you can comment on or make changes to this bug.
Description
•