Re: [css2.1] Issue 158 and Issue 178 Resolution

On Thu, Aug 5, 2010 at 8:17 PM, L. David Baron <dbaron@dbaron.org> wrote:
> On Thursday 2010-08-05 18:28 -0700, Tab Atkins Jr. wrote:
>> On Thu, Aug 5, 2010 at 2:22 PM, Tab Atkins Jr. <jackalmage@gmail.com> wrote:
>> > Change 3
>> > --------
>> >
>> > In section 9.5.2, at the end of the paragraph starting "Computing the
>> > clearance of an element...", delete from "previous adjacent margins"
>> > to the end of the sentence.  Replace it with "adjoining margins,
>> > according to the margin-collapsing rules in 8.3.1".
>>
>> I thought that this change would make the text sync up with
>> implementations.  It does, but only partially.
>
> This proposed change also means that whether an element has
> clearance could depend not only on whether earlier elements have
> clearance, but also on whether *later* elements have clearance,
> since which later margins are adjoining depends on which later
> elements have clearance.

Yeah, I had a similar thought floating through my head on the ride
home.  I'll see if I can produce a test-case that would demonstrate
the issue tomorrow.


> It seems likely that this could introduce cases that are ambiguous
> or impossible to satisfy, though I haven't yet demonstrated this.
>
> On the other hand, if you consider later margins but presume that
> later elements won't have clearance, you could end up in cases where
> 'clear' fails to cause an element to clear because it presumes that
> a margin will participate in the collapse, but in the end it
> actually doesn't.
>
> And if you consider later margins and presume that all later
> elements will have clearance, then you end up back where we started,
> except for the empty element case (which is probably less important
> than the case of an element with clear whose first child is a block
> with a margin).

The empty element case is the one that's causing all the trouble.
Damn early HTML spec writers.

I want to ensure that we don't change the behavior of the non-empty
element case, since that's the part that actually makes sense.


>> Quite a lot in this section is totally arbitrary in the first place,
>> so neither option makes more sense than the other.  Thus, I suggest
>> going with my change, as it's the option that IE and Webkit have
>> taken.
>
> Which parts do you think are totally arbitrary?

I'm just going to circle my hands over that part of the spec and say
"Sorta this spot".


> That said, I'm not sure that we're interpreting the spec correctly.
> I think we're both presuming that, where bullet point (1) below this
> text says "the border edge" it means "the hypothetical position of
> the border edge".  But I'm actually starting to think that
> assumption is wrong.

That was my assumption, yes.


> I've now spent almost an hour and a half trying to understand this
> change, and largely failed.

You and me both, brother.

~TJ

Received on Friday, 6 August 2010 03:27:29 UTC