- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Fri, 14 May 2010 11:42:35 -0400
- To: Daniel Glazman <daniel.glazman@disruptive-innovations.com>
- CC: www-style list <www-style@w3.org>
- Message-ID: <4BED6F6B.9020601@mit.edu>
On 5/14/10 6:41 AM, Daniel Glazman wrote: > Mozilla, please also contribute a mail about ::-moz-selection possibly > more precise than the contents of [1]. The behavior of ::-moz-selection is about (based on code inspection; I might have missed corner cases but I don't think I have) like this: When it comes time to paint the selection for a "text box" (the object involved has no CSS spec equivalent, but roughly corresponds to a box for some text; it acts like an inline box with no margin/border/padding and dimensions determined by the text), the following steps are performed: 1) Find the "selection element", which is the nearest ancestor element of the text. This search skips over pseudo-elements. In particular, for text in a ::before/::after the element found will be the parent element of the ::before/::after. 2) Determine the set of matching rules by looking for rules that use the ::-moz-selection pseudo-element and match the "selection element" for the rest of the selector. If this set is empty, abort these steps and do selection painting in some other way. 3) Determine the specified style for the ::-moz-selection using the set of rules determined in step 2. 4) Determine the computed style for the -moz-selection by using the style of the "text box" as the parent style to inherit from and using the specified style determined in step 3. 5) Use the resulting computed 'background-color' and 'color' to paint the selection. This is all only true if the document is currently focused. If it's not focused, we use the OS-default styling for inactive selections, I believe. Attached is a small HTML testcase showing some of the behavior. Obvious differences from other browsers I have here: Opera: * Gecko doesn't allow selecting generated content, Opera does * Opera seems to do something quite weird for "color: currentColor"; in particular, it treats it differently from "color: inherit". Webkit nightly: * Selection inside ::first-line doesn't seem to inherit from the first-line pseudo-element in webkit * The text inside ::first-letter is not selectable in webkit. * Webkit seems to ignore the specified background on ::selection if it's specified as "none" and uses the default background color. In particular, "background: none" and "background: transparent" have different behavior in webkit, which is rather weird. -Boris
Attachments
- text/html attachment: test.html
Received on Friday, 14 May 2010 15:59:11 UTC