Bill Walton wrote:
> Hi Gunlaug,
> First of all, thanks! That works. Now...
> Gunlaug Sørtun wrote;
>>> I could use some help figuring out why the right column won't come up
>>> against the main one but rides underneath instead.
>> That's how floats work - right_col can't float upwards past the
>> non-floating main.
> But main can 'float' to the top between left_col and right_col?
Main isn't floating. It's wrapping around the other floats. It's the
non-floated content that rises up to wrap around a float.
Think of it this way. Let's say your source order was back to leftcol,
maincol, rightcol (I recommend you actually work through my example as a
learning exercise). Now lets say you don't have any CSS on them at all.
How will they display? The leftcol will display first, then the maincol
will be below it, then the rightcol will be below that, all three
stacked. When you add a float value, all you do is tell the div to move
to the left or the right. You don't tell it to move up. So let's say you
float leftcol left and give it a width. It doesn't move up at all. But
maincol moves up beside it. And righcol is still beneath maincol. Now
let's say you float rightcol right and give it a width. It doesn't move
up -- it stays beneath maincol, just moves to the right side of the
screen. This is exactly what leftcol did -- stayed at the same vertical
level, just moved over horizontally. Floating moves items over, not up.
The static content adjacent to the floats can move up to wrap around them.
So that's why you need to put both floats before maincol in the source
(change the HTML back to leftcol, rightcol, maincol, and remove all the
CSS and do the exercise I outlined above over again to see the new
source order in action). Does this make sense now?
> What would
> you recommend I study in order to understand this? It is, to me, very
> counter-intuitive. I need something in "plain english".
Actually, it's not counter-intuitive. I think you're just overthinking
it. Float left moves an item to the left, not up, not down. Float right
moves an item to the right, not up, not down. That's an
oversimplification, but that's the basic idea. Make sense?
>> For that kind of 'float/non-float' layout to work, you'll have to change
>> the order in the source-code (HTML) so it becomes...
> I know this must be related to my earlier question re: understanding what
> 'normal page flow' means. I haven't made it through everything Zoe
> recommended, though. So maybe the answer already awaits!
Yes, I think you will find that it does. :-)
>> ...and keep the CSS as is.
> Is there an easy way to keep the HTML as is and change the CSS to achieve
> the same result? I mean, changing the order of the HTML wasn't intuitive,
> but it <em> was </em> easy.
Hopefully my explanation has made changing the HTML intuitive. But yes,
there is a way to keep the main content first in the source and have the
floats come later. The issue is that I think this is beyond your level.
Get a good understanding of page float and floating first, then you can
move on to more advanced layout techniques.
Zoe M. Gillenwater
Design Services Manager
UNC Highway Safety Research Center
IE7b2 testing hub -- http://css-discuss.incutio.com/?page=IE7
List wiki/FAQ -- http://css-discuss.incutio.com/
Supported by evolt.org -- http://www.evolt.org/help_support_evolt/