- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Fri, 26 Jul 2013 10:07:13 -0700
- To: Simon Sapin <simon.sapin@exyr.org>
- Cc: François REMY <francois.remy.dev@outlook.com>, "www-style@w3.org" <www-style@w3.org>
On Thu, Jul 25, 2013 at 10:40 PM, Simon Sapin <simon.sapin@exyr.org> wrote: > Le 25/07/2013 19:13, François REMY a écrit : >> Use cases include: >> >> - flowing text nodes into a css-region-flow while keeping some siblings >> out of the flow >> >> .to-flow-into> *:node-type(all) { flow-into: x } >> .to-flow-into> .not-in-flow { flow-into: none } >> >> - hiding text-nodes as part of the continuing content of a document >> >> .read-more ~ *:node-type(all) {display:none}) >> >> - coloring them without affecting the other elements inherited color value >> >> .local-blue> *:node-type(text) { color: blue } > > > I’m not super convinced. It seems that these examples would be used between > "block-level" siblings, where you rarely have "naked" text nodes. (Often, > there is at least a <p> element.) > > But that’s just my opinion. Another obvious use-case is the fact that you can't implement <details> in CSS right now. When a <details> is closed, all of its non-<summary> contents need to be hidden, but if those contents are naked text (which is totally allowed), you can't do it. We have a hack for this in Shadow DOM, but that just illustrates even more why we need something for this: In Shadow DOM, you can import elements from the light DOM into a specific place in the shadow, by using <content>. The <content> element can have a select='' attribute, which takes a selector to filter only the elements you want for that spot. We have special behavior that, if the select='' attribute doesn't have a value (that is, <content select></content>), it selects *everything*, including text nodes. This is different from select="*", which only selects real elements. We had to add this special behavior because there's no way to select text via a Selector currently. (This lets us do <details> because <content> elements are evaluated in document order, and earlier ones get first dibs on light DOM elements. So the shadow tree of <details> is basically just: <shadow> <div id=summary> <content select=summary></content> </div> <div id=content> <content></content> </div> </shadow> And we flip the 'display' on #content based on whether it's open or not.) ~TJ
Received on Friday, 26 July 2013 17:08:04 UTC