- From: Alan Gresley <alan@css-class.com>
- Date: Sun, 10 Oct 2010 00:09:43 +1100
- To: Anton Prowse <prowse@moonhenge.net>
- CC: www-style list <www-style@w3.org>, Bert Bos <bert@w3.org>, "Tab Atkins Jr." <jackalmage@gmail.com>
Anton Prowse wrote: > On 08/10/2010 21:26, Anton Prowse wrote: >> On 06/10/2010 21:36, Bert Bos wrote: >>> On Wednesday 06 October 2010 01:48:17 Tab Atkins Jr. wrote: >>>> This email is an attempt to resolve Issue 101 >>>> (http://wiki.csswg.org/spec/css2.1#issue-101) >>> >>>> Suggested Change >>>> ================ >>> >>> Why do you propose to change the spec? It's just an implementation bug, >>> isn't it? >> >> Well, the behaviour doesn't match the spec, sure. >> >> However, I remain unconvinced that browsers' current behaviour is >> undesirable. To me, it seems rather logical. As I've mentioned a couple >> of times already, the issue here is containing blocks and overflow: I agree but for different reasons. I see it as a set of rules that are one sided (the nature of floats), either left or right. >> Firstly, browsers treat all floats as if their overflow from their >> containing block is clipped (ie ignored for layout purposes). This is >> enough to "explain" the test cases for Rule 3, and some of the test >> cases for Rule 7. The horizontal overflow of a float from it's containing block is not clipped. That can only happen if the containing block has overflow: hidden. Is the overflow of this float ignored? <!DOCTYPE html> <div style="width:300px;border:5px solid blue;"> <div style="float: left; width:400px; height:150px; background: lime;"></div> </div> <div style="background: orange;">This text flows around the float</div> The reason that rule 3 is being ignored in some cases and in some browsers is due to rule 1. I believe that rule 3 was intended to deal with simple cases where both floats (left and right) interacted in the same containing block. Do you understand the intent of this test series [1]? Sometime in early 2008 I noticed that Gecko would allow the left outer edges (with or without margin-left) of right floated boxes to overflow the body to the left and become hidden. This caused me to ask this question on this list in which dbaron replied [2] (the first part). WebKit then changed it bug behavior and then IE8 final followed. It was only last year that I realized that is was about rule 1 being ignored by all other browsers apart from Gecko. >> This behaviour is reasonable because overflow is impotent in all other >> ways in CSS21, so it's anomalous that it isn't impotent for floats. In which way are you talking about overflow. I do not understand what you mean by impotent (definition: utterly unable to do something or obsolete, without restraint). > I'm excepting /vertical/ overflow for floats here, obviously. The > non-impotence of vertical overflow of floats is a unique, integral and > justifiable part of float behaviour; it's also rather different from > horizontal overflow of floats and from any overflow of other boxes in > that these types of overflow are generally "accidental" (which is why > impotence is desirable) whereas vertical overflow of floats is "expected". As above with your use of non-impotence. I see not much difference between horizontal overflow and horizontal overflow. The only difference is due to the direction of block progression. Overflow in ttb block progression typically overflows downwards. > To make a case for non-impotence of horizontal overflow for floats, you > would need to present typographical justification for why the second > float should move downwards in this case... > > <!DOCTYPE html> > <div style="float:left; width:100px; height:100px; > background:yellow"></div> > <div style="margin-left:120px; width:150px; height:200px; > background:green"> > <div style="float:left">supercalifragilisticexpialidocious</div> > </div> Should that not be this? <!DOCTYPE html> <div style="float:left; width:100px; height:100px; background:yellow"></div> <div style="margin-left:120px; width:150px; height:200px; background:green"> <div style="float:right">supercalifragilisticexpialidocious</div> </div> > ...whilst the text doesn't move downwards in this one: > > <!DOCTYPE html> > <div style="float:left; width:100px; height:100px; > background:yellow"></div> > <div style="margin-left:120px; width:150px; height:200px; > background:green"> > supercalifragilisticexpialidocious > </div> How could the text move downwards. The block with the text has it's margin-left sitting on the left edge of it's initial containing block, one which it shared with the float. > Cheers, > Anton Prowse > http://dev.moonhenge.net Anton, what do you think should happen here (view in Gecko). <http://css-class.com/test/temp/rule1and3-rtl.htm> Should the reverse happen in ltr (overlapping floats)? 1. <http://css-class.com/test/css/bidi/visible-overflow-containing-block-ltr.htm> 2. <http://lists.w3.org/Archives/Public/www-style/2008Mar/0423.html> -- Alan http://css-class.com/ Armies Cannot Stop An Idea Whose Time Has Come. - Victor Hugo
Received on Saturday, 9 October 2010 13:10:15 UTC