- From: Giovanni Campagna <scampa.giovanni@gmail.com>
- Date: Sun, 12 Apr 2009 18:44:24 +0200
- To: François REMY <fremycompany_pub@yahoo.fr>
- Cc: CSS 3 W3C Group <www-style@w3.org>
2009/4/12 François REMY <fremycompany_pub@yahoo.fr>: > ::outside can be useful in other case that you > don't have mentioned. > > You look at ::outside only from the border/margin > point of view, but it can have many other useful > things. > > With ::outside, you can perform a break outside the > element (useful if you want to have an element on a > new line but doesn't contains the line break). > > * First sample : > <myElem>Hello</myElem> > myElem::outside::before { content: '\A'; } > > Is rendered like : > <br/><myElem>Hello</myElem> > > * Second sample : > <myElem>Hello</myElem> > myElem::before { content: '\A'; } > > Is rendered like : > <myElem><br/>Hello</myElem> > > * Last sample : > <myElem>Hello</myElem> > myElem::inside::before { content: '\A'; } > > Is rendered like : > <myElem><br/>Hello</myElem> You think in terms of elements, not of boxes. If all properties are moved from "myElem" to "myElem::inside", then the visible effect of "myElem::before" is the same of "myElem::outside::before" with properties on "myElem". > If you have something like that : > > <box display-model="ab"> > <div display-role="a"></div> > <div display-role="b"></div> > </box> > > And a CSS like that : > div[display-role="a"]::outside { > margin: 10px; > } > > It's rendered the same way as : > > <box display-model="ab"> > <div display="block"><div display-role="a"></div></div> > <div display-role="b"></div> > </box> > > The display role of the 'inner' div is no more applyable (I think), so it's > not in the display-model of the box element. > But it seems the spec of display-model is unclear about how the UA must > react if an element in a display-model'ed > element contains elements that does'nt enter in the model. But it's not a > problem of '::outside'. What? You're mixing XSL:FO (attributes as properties), Template Layout (slots), display-model... > Regards, > Fremy > > -------------------------------------------------- > From: "Giovanni Campagna" <scampa.giovanni@gmail.com> > Sent: Saturday, April 11, 2009 7:39 PM > To: "www-style" <www-style@w3.org> > Subject: [css3-content] Replacing ::outside with ::inside > >> -- background -- >> This proposal crossed my mind while talking with Tab Atkins about >> ::slot in Template Layout. He wanted to allow margins, and to make >> those margins not collapse (sort of "box-sizing:margin-box"). I didn't >> like the idea, but I did think that allowing some space between >> adjacient slots and their borders may be useful. But I thought that >> this kind of space is not a margin, but rather a padding (because it >> is all around the box and doesn't collapse). >> Ok then, how to specify an external padding? You need two boxes, one >> inside the other. >> I said to myself: I need the Generated Content features... but what >> does ::slot()::outside mean? How shall I specify "display:slot"? >> This didn't look very good to me >> >> -- the current situation -- >> The Generated and Replaced Content Module introduces the ::outside >> pseudo-elements, which wraps its superior parent and all its (in flow) >> content. This pseudo-element is not implemented in any UA I tested. In >> addition, it creates a lot of difficulty on the author side, because >> the wrapping generated box still inherits (like every other >> pseudo-element) from its superior parent. >> >> -- my proposal -- >> Drop ::outside. >> Add ::inside, a pseudo-element wrapping all superior parent's content >> (but not ::before, ::after, ::alternate or other pseudo-elements). All >> properties apply to this pseudo-element (but their meaning is changed, >> because it is inside its superior parent like a nested <div>) >> This way, to add multiple borders to an element, you say: >> .multiple { >> border:1px solid yellow; >> } >> .multiple::inside { >> border:1px solid blue; >> } >> .multiple::inside::inside { >> border:1px solid red; >> } >> >> We may introduce the syntax shorthand "::inside(n)". >> Not generated ::inside elements are removed, ie if ::inside::inside is >> never referenced, ::inside::inside::inside is the same as >> ::inside::inside. >> >> -- use cases -- >> All of ::outside, plus those case when an appropriate ::outside is not >> available, like for example ::slot. >> >> Giovanni >> >
Received on Sunday, 12 April 2009 16:45:00 UTC