I think the reason a div will not enclose a floated element is that, because the flow is just working its way some where, and so Div won't enclosed the "clear: both" area... (see post) http://forums.digitalpoint.com/showthread.php?t=370584 I think most of the time, we want the div to enclose the "flow's clearing point"... most of the time, that is... with rare design use that we actually want to not to enclose... (for overlapping effect)... so how about in the next CSS definition, any div will automatically enclose floated elements, unless there is a declaraction in <div sytle="enclose: none ... " and the default value is "auto", which means it will enclose a floated element.
There are several methods that cause an element to enclose its float children. It's up to you to learn how floats work and how a certain browser gets so much wrong. See also http://garyblue.port5.com/webdev/floatdemo.html cheers, gary