[css-pseudo] Review of the first public working draft

Daniel, Fantasai, Alan,

Thank you so much for this first public working draft. I wish you good luck in your attempts to make it progress further.

I had a closer look at the text and wanted to share my various comments. 

Best regards,
François

PS: If you believe it would be more appropriate to divide this into multiple mails for further discussion, feel free to quote only one issue and rename the subject as you reply (if you so wish).


------------------------------------------------------------------------------------------------------------


[1] Incorrect text in the introduction
=========================================
Correct me if I'm mistaken but ::first-line does not "select content on the first formatted line of an element *after* text wrapping" but *during* the text wrapping computation since its content may have a different font and therefore a different sizing. 

I propose to rework the text as follows: "[::first-line] is a pseudo-element created by wrapping the inline content of a block element until a line break has to be inserted". Does it sound any better to you?


[2] Svg <text> properties in ::selection?
=========================================
I believe properties like "Stroke" and "Fill" (color) should be supported for SVG <text> in the Highlights pseudo-elements.


[3] Issue 7
=========================================
FWIW, I agree with whoever wrote the issue saying that only text decorations defined for the selection should be drawn over the selection background, and not the ones defined for the original text.


[4] Issue 12
=========================================
I'm rather strongly in favor or a "more radical approach could take everything that’s common between a pseudo-element and a node and create a new base class for both Node and CSSPseudoElement". I think it makes sense as we may want to reuse the same code for any stylable content at some point, it would be cumbersome to use different property names and force use to create adaptors over the pseudo-elements, I think.

On that matter, I do believe the type values should include the "::" and be equal to the pseudo itself (so "::before" and not "before", "::first-line" and not "line"...). If we imagine multiple pseudo-elements, the arguments of the function should not be included, I believe (but I don't think this exists yet).


[5] Insufficient definition of getPseudoElementsOf(...)
=========================================
I argue that the specification doesn't explain when "a pseudo-element exists" or not. As a result, the following definition isn't very well defined, too: "The getPseudoElements() method is used to retrieve all CSSPseudoElement instances created by the element elt for the type type. Its return value is a CSSPseudoElementList, potentially empty if no pseudo-element exists for the given element and the given type".

Deciding it just requires content to be something else than "none" doesn't work for things like "first-line". Maybe we should split the definition between "natural pseudo-elements" (first-letter) and "inserted pseudo-elements" (before). The second ones exist when some non-empty content is applied to them, while the first ones exists if they match anything based on their definition, independently of the fact some css target them or not.

The question remains here about how you "create" the "::before" pseudo-element if it doesn't exist via CSS though, but I believe this is covered by the first Note of the section 6 (Additions to CSSOM).


That's all for now. Have a nice evening,
François

Received on Friday, 16 January 2015 22:22:46 UTC