Scott C.
Scott C.

Reputation: 71

Wrapper question when containing floating divs

I would like to create a, browser centered, bordered, wrapper that autoexpands in height around various divs. When using floats to keep the divs in-line, the wrapper just stops after the first div. Be kind, this may or may not be right way to do this but that's why I'm here.

Here is a simple example.

<head>

<style type="text/css">
<!--
#wrapper {
height: 100%;
width: 800px;
border: 1px solid #000;
margin-right: auto;
margin-left: auto;
}
#header {
height: 100px;
width: 800px;
}
#column1 {
width: 300px;
height: 400px;
float: left;
}
#column2 {
height: 400px;
width: 300px;
float: left;
}
#navbox {
float: left;
width: 200px;
height: 400px;
}
-->
</style>

</head>

<body>

<div id="wrapper">

<div id="header">test header</div>
<div id="navbox">test navbox</div>
<div id="column1">test column1</div>
<div id="column2">test column2</div>

</div><!--Close_wrapper-->
</body>
</html>

Upvotes: 6

Views: 14817

Answers (4)

cedd
cedd

Reputation: 1853

I would use the :after psuedo class like below. It seems a bit more obvious what is supposed to happen and a bit less like browser weirdness. I'm sure not that overflow solution is officially supposed to work.

#wrapper:after {
    clear:both;
    display: block;
    content: " ";
}

Upvotes: 3

Wes
Wes

Reputation: 1844

You can add something like <br style="clear:both" /> as the last element in your wrapper to force it to wrap around your elements that are outside the content stream.

<div id="wrapper">

<div id="header">test header</div>
<div id="navbox">test navbox</div>
<div id="column1">test column1</div>
<div id="column2">test column2</div>

<br style="clear:both" />

</div><!--Close_wrapper-->

Upvotes: 6

SLaks
SLaks

Reputation: 887413

You need to add an element with clear:both after the divs.

Demo

Upvotes: 4

Pekka
Pekka

Reputation: 449415

The answer to questions that contain float and wrap in one sentence is usually

overflow: auto

:)

If you want your wrapper to auto-expand in height, that should do it.

Upvotes: 23

Related Questions