Reputation: 71
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
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
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
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