- From: François REMY <fremycompany_pub@yahoo.fr>
- Date: Sun, 12 Apr 2009 10:35:48 +0200
- To: "Giovanni Campagna" <scampa.giovanni@gmail.com>, "CSS 3 W3C Group" <www-style@w3.org>
::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> 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'. 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 08:36:31 UTC