Re: [css3-content] Replacing ::outside with ::inside

2009/4/11 Tab Atkins Jr. <jackalmage@gmail.com>:
> On Sat, Apr 11, 2009 at 12:39 PM, Giovanni Campagna
> <scampa.giovanni@gmail.com> wrote:
>> -- 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.
>
> How do margins on an ::inside pseudoelement interact with margins of
> the superior parent, and of children elements?

I think that the ::inside should be treated as an anonymous <div>, in
all respects, including collapsing of margins.

> ~TJ
>

Received on Sunday, 12 April 2009 16:46:42 UTC