Forum Moderators: not2easy

Message Too Old, No Replies

Stretching a content div

Make content div dynamically grow and shrink depending on height of nav

         

devin mcmanus

8:09 pm on Jan 12, 2009 (gmt 0)

10+ Year Member



I'm working on a page with a menu that grows and shrinks dynamically (represented by the red box). The content box (white box) is supposed to grow and shrink with the red box (red box should fit inside the white box). What's happening is the red box is spilling out over the white rather than stretching it.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<style type="text/css">
* { padding:0; margin:0; }

body {
background:white;
}

#outercontainer-overflow {
margin:0 auto;
min-width:980px;
overflow:hidden;
}

#outercontainer {
margin:0 auto;
position:relative;
width:980px;
}

#background {
background:#000;
height:auto!important;
margin:0 auto auto -360px;
min-height:950px;
width:1700px;
}

#contentoverlay {
background:#000;
width:1700px;
}

#wrap {
width:980px;
margin:0 auto;
background:white;
}
#navigation {
width:178px;
position:relative;
float:left;
overflow:hidden;
background:#FF0000;
left:14px;
top:133px;
}

#header {
height:28px;
left:208px;
position:absolute;
top:157px;
width:595px;
}

h1 {
font-size:18px;
left:24px;
position:absolute;
text-transform:uppercase;
top:4px;
}

#homebutton {
left:525px;
position:absolute;
top:6px;
}

#homebutton a {
background:#009900;
display:block;
overflow:hidden;
padding-left:52px;
width:0;
}

#homebutton a:hover {
background:#00FF00;
}

#bodyarea {
padding:204px 24px 25px 232px;
width:547px;
}

#body-content {
height:auto!important;
min-height:225px;
overflow:hidden;
}

#ctas {
background:#0000FF;
height:459px;
left:803px;
position:absolute;
top:20px;
width:162px;
}
</style>

</head>

<body>

<div id="outercontainer-overflow">
<div id="outercontainer">
<div id="background">

<div id="contentoverlay">

<div id="wrap">
<div id="navigation">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus arcu erat, accumsan nec, ultrices a, dictum in, est. Proin pretium sapien a nulla. Pellentesque volutpat aliquet purus. Nulla id neque. Fusce eu risus. Suspendisse in sapien. Aenean suscipit erat id magna. Curabitur orci. Vestibulum nunc. Pellentesque a metus. Nulla vitae neque sed turpis ornare condimentum. Nunc molestie. Donec sed nisl. Vivamus sed dolor pretium elit vestibulum interdum. Vestibulum pretium, nulla eu mattis adipiscing, lacus elit condimentum orci, at aliquam dolor quam a lacus. Ut vitae est non lorem egestas blandit. Donec dignissim ligula ac ante. Praesent consequat ullamcorper odio. </div><!-- navigation -->

<div id="header">
<h1>Test</h1>
<div id="homebutton">
<a href="http://www.google.ca">Home</a>
</div><!-- homebutton -->

</div><!-- header -->

<div id="bodyarea">
<div id="body-content">
<h2>Header</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus arcu erat, accumsan nec, ultrices a, dictum in, est. Proin pretium sapien a nulla. Pellentesque volutpat aliquet purus. Nulla id neque. Fusce eu risus. Suspendisse in sapien. Aenean suscipit erat id magna. Curabitur orci. Vestibulum nunc. Pellentesque a metus. Nulla vitae neque sed turpis ornare condimentum. Nunc molestie. Donec sed nisl. Vivamus sed dolor pretium elit vestibulum interdum. Vestibulum pretium, nulla eu mattis adipiscing, lacus elit condimentum orci, at aliquam dolor quam a lacus. Ut vitae est non lorem egestas blandit. Donec dignissim ligula ac ante. Praesent consequat ullamcorper odio. </p>
</div><!-- body-content -->
</div><!-- bodyarea -->

<div id="ctas">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus arcu erat, accumsan nec, ultrices a, dictum in, est. Proin pretium sapien a nulla. Pellentesque volutpat aliquet purus. Nulla id neque. Fusce eu risus. Suspendisse in sapien. Aenean suscipit erat id magna. Curabitur orci. Vestibulum nunc. Pellentesque a metus. Nulla vitae neque sed turpis ornare condimentum. Nunc molestie. Donec sed nisl. Vivamus sed dolor pretium elit vestibulum interdum. Vestibulum pretium, nulla eu mattis adipiscing, lacus elit condimentum orci, at aliquam dolor quam a lacus. Ut vitae est non lorem egestas blandit. Donec dignissim ligula ac ante. Praesent consequat ullamcorper odio.</div><!-- ctas -->


</div> <!-- wrap -->

</div><!-- contentoverlay -->
</div><!-- background -->
</div><!-- outercontainer -->
</div><!-- outercontainer-overflow -->

</body>
</html>

Can someone please help?

simonuk

4:46 pm on Jan 14, 2009 (gmt 0)

10+ Year Member



You have a few problems with the CSS. For example you specify one width in the outter container but then try increasing the widths for the inner divs. This can lead to problems. If you want pixel perfect control it is always better to do this via the outter divs.

I love the K.I.S.S approach (Keep It Simple Stupid). Could you not just go a much simpler route:

body { margin: 0px; padding: 0px; background-color:black; }
#container {width:980px; margin:0 auto; background-color:white;}
#left {width:180px; float:left;margin-right:20px;background-color:red}
#middle {width:580px; float:left;margin-right:20px;background-color:white;}
#right {width:180px; float:left;background-color:blue;}
#footer {clear:both;}

Then:

<div id="container">

<div id="left"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus arcu erat, accumsan nec, ultrices a, dictum in, est. Proin pretium sapien a nulla. Pellentesque volutpat aliquet purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus arcu erat, accumsan nec, ultrices a, dictum in, est.</p> </div>

<div id="middle"><h1>Header</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus arcu erat, accumsan nec, ultrices a, dictum in, est. Proin pretium sapien a nulla. Pellentesque volutpat aliquet purus. Nulla id neque. </p></div>

<div id="right"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus arcu erat, accumsan nec, ultrices a, dictum in, est. Proin pretium sapien a nulla. Pellentesque volutpat aliquet purus.</p></div>

<div id="footer"></div>
</div>